The Economics of Climate Change: The Stern Review
A TiddlyPerfect rendition and founding element of Climate Change 2.0
is loading ...

Requires Javascript.
The Economics of Climate Change 2.0 - a partial TiddlyPerfect rendition of The Stern Review and the founding element of Climate Change 2.0
An overwhelming body of scientific evidence now clearly indicates that climate change is a serious and urgent issue. The Earth's climate is rapidly changing, mainly as a result of increases in greenhouse gases caused by human activities.\n\nMost climate models show that a doubling of pre-industrial levels of greenhouse gases is very likely to commit the Earth to a rise of between 2 - 5°C in global mean temperatures. This level of greenhouse gases will probably be reached between 2030 and 2060. A warming of 5°C on a global scale would be far outside the experience of human civilisation and comparable to the difference between temperatures during the last ice age and today. Several new studies suggest up to a 20% chance that warming could be greater than 5°C.\n\nIf annual greenhouse gas emissions remained at the current level, concentrations would be more than treble pre-industrial levels by 2100, committing the world to 3 - 10°C warming, based on the latest climate projections.\n\nSome impacts of climate change itself may amplify warming further by triggering the release of additional greenhouse gases. This creates a real risk of even higher temperature changes.\n* Higher temperatures cause plants and soils to soak up less carbon from the atmosphere and cause permafrost to thaw, potentially releasing large quantities of methane.\n* Analysis of warming events in the distant past indicates that such feedbacks could amplify warming by an additional 1 - 2°C by the end of the century.\nWarming is very likely to intensify the water cycle, reinforcing existing patterns of water scarcity and abundance and increasing the risk of droughts and floods.\nRainfall is likely to increase at high latitudes, while regions with Mediterranean-like climates in both hemispheres will experience significant reductions in rainfall. Preliminary estimates suggest that the fraction of land area in extreme drought at any one time will increase from 1% to 30% by the end of this century. In other regions, warmer air and warmer oceans are likely to drive more intense storms, particularly hurricanes and typhoons.\n\nAs the world warms, the risk of abrupt and large-scale changes in the climate system will rise.\n* Changes in the distribution of heat around the world are likely to disrupt ocean and atmospheric circulations, leading to large and possibly abrupt shifts in regional weather patterns.\n* If the Greenland or West Antarctic Ice Sheets began to melt irreversibly, the rate of sea level rise could more than double, committing the world to an eventual sea level rise of 5 - 12 m over several centuries.\nThe body of evidence and the growing quantitative assessment of risks are now sufficient to give clear and strong guidance to economists and policy-makers in shaping a response.
Understanding the scientific evidence for the human influence on climate is an essential starting point for the economics, both for establishing that there is indeed a problem to be tackled and for comprehending its risk and scale. It is the science that dictates the type of economics and where the analyses should focus, for example, on the economics of risk, the nature of public goods or how to deal with externalities, growth and development and intra- and inter-generational equity. The relevance of these concepts, and others, is discussed in Chapter 2.\n\nThis chapter begins by describing the changes observed in the Earth's system, examining briefly the debate over the attribution of these changes to human activities. It is a debate that, after more than a decade of research and discussion, has reached the conclusion there is no other plausible explanation for the observed warming for at least the past 50 years. The question of precisely how much the world will warm in the future is still an area of active research. The Third Assessment Report (TAR) of the Intergovernmental Panel on Climate Change (IPCC)1 in 2001 was the last comprehensive assessment of the state of the science. This chapter uses the 2001 report as a base and builds on it with more recent studies that embody a more explicit treatment of risk. These studies support the broad conclusions of that report, but demonstrate a sizeable probability that the sensitivity of the climate to greenhouse gases is greater than previously thought. Scientists have also begun to quantify the effects of feedbacks with the natural carbon cycle, for example, exploring how warming may affect the rate of absorption of carbon dioxide by forests and soils. These types of feedbacks are predicted to further amplify warming, but are not typically included in climate models to date. The final section of this chapter provides a starting point for Part II, by exploring what basic science reveals about how warming will affect people around the world.
An overwhelming body of scientific evidence indicates that the Earth's climate is rapidly changing, predominantly as a result of increases in greenhouse gases caused by human activities.\n\nHuman activities are changing the composition of the atmosphere and its properties. Since pre-industrial times (around 1750), carbon dioxide concentrations have increased by just over one third from 280 parts per million (ppm) to 380 ppm today (Figure 1.1), predominantly as a result of burning fossil fuels, deforestation, and other changes in land-use.2 This has been accompanied by rising concentrations of other greenhouse gases, particularly methane and nitrous oxide.\n\nThere is compelling evidence that the rising levels of greenhouse gases will have a warming effect on the climate through increasing the amount of infrared radiation (heat energy) trapped by the atmosphere: "the greenhouse effect" (Figure 1.2). In total, the warming effect due to all (Kyoto) greenhouse gases emitted by human activities is now equivalent to around 430 ppm of carbon dioxide (hereafter, CO~~2~~ equivalent or CO~~2~~e)3 (Figure 1.1) and rising at around 2.3 ppm per year4. Current levels of greenhouse gases are higher now than at any time in at least the past 650,000 years.5\n\n<<tiddler "Figure 1.1">>\n\n<<tiddler "Figure 1.2">>\nThe Earth has warmed by 0.7°C since around 1900 (Figure 1.3). Global mean temperature is referred to throughout the Review and is used as a rough index of the scale of climate change. This measure is an average over both space (globally across the land-surface air, up to about 1.5 m above the ground, and sea-surface temperature to around 1 m depth) and time (an annual mean over a defined time period). All temperatures are given relative to pre-industrial, unless otherwise stated. As discussed later in this chapter, this warming does not occur evenly across the planet.\n\nOver the past 30 years, global temperatures have risen rapidly and continuously at around 0.2°C per decade, bringing the global mean temperature to what is probably at or near the warmest level reached in the current interglacial period, which began around 12,000 years ago8. All of the ten warmest years on record have occurred since 1990. The first signs of changes can be seen in many physical and biological systems, for example many species have been moving poleward by 6 km on average each decade for the past 30 - 40 years. Another sign is changing seasonal events, such as flowering and egg laying, which have been occurring 2 - 3 days earlier each decade in many Northern Hemisphere temperate regions.9\n\n<<tiddler "Figure 1.3">>\nThe IPCC concluded in 2001 that there is new and stronger evidence that most of the warming observed over at least the past 50 years is attributable to human activities.10 Their confidence is based on several decades of active debate and effort to scrutinise the detail of the evidence and to investigate a broad range of hypotheses.\n\nOver the past few decades, there has been considerable debate over whether the trend in global mean temperatures can be attributed to human activities. Attributing trends to a single influence is difficult to establish unequivocally because the climate system can often respond in unexpected ways to external influences and has a strong natural variability. For example, Box 1.1 briefly describes the debate over whether the observed increase in temperatures over the last century is beyond that expected from natural variability alone throughout the last Millennium.\n\n<<tiddler "Box 1.1">>\nMuch of the debate over the attribution of climate change has now been settled as new evidence has emerged to reconcile outstanding issues. It is now clear that, while natural factors, such as changes in solar intensity and volcanic eruptions, can explain much of the trend in global temperatures in the early nineteenth century, the rising levels of greenhouse gases provide the only plausible explanation for the observed trend for at least the past 50 years. Over this period, the sustained globally averaged warming contrasts strongly with the slight cooling expected from natural factors alone. Recent modelling by the Hadley Centre and other research institutes supports this. These models show that the observed trends in temperatures at the surface and in the oceans12, as well as the spatial distribution of warming13, cannot be replicated without the inclusion of both human and natural effects.\n\nTaking into account the rising levels of aerosols, which cool the atmosphere,14 and the observed heat uptake by the oceans, the calculated warming effect of greenhouse gases is more than enough to explain the observed temperature rise.
The causal link between greenhouse gases concentrations and global temperatures is well established, founded on principles established by scientists in the nineteenth century.\n\nThe greenhouse effect is a natural process that keeps the Earth's surface around 30°C warmer than it would be otherwise. Without this effect, the Earth would be too cold to support life. Current understanding of the greenhouse effect has its roots in the simple calculations laid out in the nineteenth century by scientists such as Fourier, Tyndall and Arrhenius15. Fourier realised in the 1820s that the atmosphere was more permeable to incoming solar radiation than outgoing infrared radiation and therefore trapped heat. Thirty years later, Tyndall identified the types of molecules (known as greenhouse gases), chiefly carbon dioxide and water vapour, which create the heat-trapping effect. Arrhenius took this a step further showing that doubling the concentration of carbon dioxide in the atmosphere would lead to significant changes in surface temperatures.\n\nSince Fourier, Tyndall and Arrhenius made their first estimates, scientists have improved their understanding of how greenhouse gases absorb radiation, allowing them to make more accurate calculations of the links between greenhouse gas concentrations and temperatures. For example, it is now well established that the warming effect of carbon dioxide rises approximately logarithmically with its concentration in the atmosphere16. From simple energy-balance calculations, the direct warming effect of a doubling of carbon dioxide concentrations would lead to an average surface warming of around 1°C.\n\nBut the atmosphere is much more complicated than these simple models suggest. The resulting warming will in fact be much greater than 1°C because of the interaction between feedbacks in the atmosphere that act to amplify or dampen the direct warming (Figure 1.4). The main positive feedback comes from water vapour, a very powerful greenhouse gas itself. Evidence shows that, as expected from basic physics, a warmer atmosphere holds more water vapour and traps more heat, amplifying the initial warming.17\n\nUsing climate models that follow basic physical laws, scientists can now assess the likely range ofwarming for a given level of greenhouse gases in the atmosphere.\n\nIt is currently impossible to pinpoint the exact change in temperature that will be associated with a level of greenhouse gases. Nevertheless, increasingly sophisticated climate models are able to capture some of the chaotic nature of the climate, allowing scientists to develop a greater understanding of the many complex interactions within the system and estimate how changing greenhouse gas levels will affect the climate. Climate models use the laws of nature to simulate the radiative balance and flows of energy and materials. These models are vastly different from those generally used in economic analyses, which rely predominantly on curve fitting. Climate models cover multiple dimensions, from temperature at different heights in the atmosphere, to wind speeds and snow cover. Also, climate models are tested for their ability to reproduce past climate variations across several dimensions, and to simulate aspects of present climate that they have not been specifically tuned to fit.\n\n<<tiddler "Figure 1.4">>\nFeedbacks including a possible reduction in the efficiency of the land and oceans to absorb carbon dioxide emissions and increased natural releases of methane\n\nLocal and global feedbacks, for example: changes in the clouds, the water content of the atmosphere and the amount of sunlight reflected by sea ice (albedo)\n\nThe accuracy of climate predictions is limited by computing power. This, for example, restricts the scale of detail of models, meaning that small-scale processes must be included through highly simplified calculations. It is important to continue the active research and development of more powerful climate models to reduce the remaining uncertainties in climate projections.\n\nThe sensitivity of mean surface temperatures to greenhouse gas levels is benchmarked against the warming expected for a doubling of carbon dioxide levels from pre-industrial (roughly equivalent to 550 ppm CO~~2~~e). This is called the "climate sensitivity" and is an important quantity in accessing the economics of climate change. By comparing predictions of different state-of-the-art climate models, the IPCC TAR concluded that the likely range of climate sensitivity is 1.5° - 4.5°C. This range is much larger than the 1°C direct warming effect expected from a doubling of carbon dioxide concentrations, thus emphasising the importance of feedbacks within the atmosphere. For illustration, using this range of sensitivities, if greenhouse gas levels could be stabilised at today's levels (430 ppm CO~~2~~e), global mean temperatures would eventually rise to around 1° - 3°C above pre-industrial (up to 2°C more than today)18. This is not the same as the "warming commitment" today from past emissions, which includes the current levels of aerosols in the atmosphere (discussed later in this chapter).\n\nResults from new risk based assessments suggest there is a significant chance that the climate system is more sensitive than was originally thought.\n\nSince 2001, a number of studies have used both observations and modelling to explore the full range of climate sensitivities that appear realistic given current knowledge (Box 1.2). This new evidence is important in two ways: firstly, the conclusions are broadly consistent with the IPCC TAR, but indicate that higher climate sensitivities cannot be excluded; and secondly, it allows a more explicit treatment of risk.\n\nFor example, eleven recent studies suggest only between a 0% and 2% chance that the climate sensitivity is less than 1°C, but between a 2% and 20% chance that climate sensitivity is greater than 5°C19. These sensitivities imply that there is up to a one-in-five chance that the world would experience a warming in excess of 3°C above pre-industrial even if greenhouse gas concentrations were stabilised at today's level of 430 ppm CO~~2~~e.\n\n<<tiddler "Box 1.2">>\nIn the future, climate change itself could trigger additional increases in greenhouse gases in the atmosphere, further amplifying warming. These potentially powerful feedbacks are less well understood and only beginning to be quantified.\n\nClimate change projections must also take into account the strong possibility that climate change itself may accelerate future warming by reducing natural absorption and releasing stores of carbon dioxide and methane. These feedbacks are not incorporated into most climate models to date because their effects are only just beginning to be understood and quantified.\n\nRising temperatures and changes in rainfall patterns are expected to weaken the ability of the Earth's natural sinks to absorb carbon dioxide (Box 1.3), causing a larger fraction of human emissions to accumulate in the atmosphere. While this finding is not new, until recently the effect was not quantified.\n\nNew models, which explicitly include interactions between carbon sinks and climate, suggest that by 2100, greenhouse gas concentrations will be 20 - 200 ppm higher than they would have otherwise been, amplifying warming by 0.1 - 1.5°C.21 Some models predict future reductions in tropical rainforests, particularly the Amazon, also releasing more carbon into the atmosphere22. Chapter 8 discusses the implications of weakened carbon sinks for stabilising greenhouse gas concentrations.\n\nWidespread thawing of permafrost regions is likely to add to the extra warming caused by weakening of carbon sinks. Large quantities of methane (and carbon dioxide) could be released from the thawing of permafrost and frozen peat bogs. One estimate, for example, suggests that if all the carbon accumulated in peat alone since the last ice age were released into the atmosphere, this would raise greenhouse gas levels by 200 ppm CO~~2~~e.23 Additional emissions may be seen from warming tropical wetlands, but this is more uncertain. Together, wetlands and frozen lands store more carbon than has been released already by human activities since industrialisation began. Substantial thawing of permafrost has already begun in some areas; methane emissions have increased by 60% in northern Siberia since the mid-1970s24.\n\nStudies of the overall scale and timing of future releases are scarce, but initial estimates suggest that methane emissions (currently 15% of all emissions in terms of CO~~2~~ equivalent25) may increase by around 50% by 2100 (Box 1.3).\n\nPreliminary estimates suggest that these "positive feedbacks" could lead to an addition rise intemperatures of 1 - 2°C by 2100.\n\nRecent studies have used information from past ice ages to estimate how much extra warming would be produced by such feedbacks. Warming following previous ice ages triggered the release of carbon dioxide and methane from the land and oceans, raising temperatures by more than that expected from solar effects alone. If present day climate change triggered feedbacks of a similar size, temperatures in 2100 would be 1 - 2°C higher than expected from the direct warming caused by greenhouse gases.26\n\nThere are still many unanswered questions about these positive feedbacks between the atmosphere, land and ocean. The combined effect of high climate sensitivity and carbon cycle feedbacks is only beginning to be explored, but first indications are that this could lead to far higher temperature increases than are currently anticipated (discussed in chapter 6). It remains unclear whether warming could initiate a self-perpetuating effect that would lead to a much larger temperature rise or even runaway warming, or if some unknown feedback could reduce the sensitivity substantially27. Further research is urgently required to quantify the combined effects of these types of feedbacks.\n\n<<tiddler "Box 1.3">>\n
Additional warming is already in the pipeline due to past and present emissions.\n\nThe full warming effect of past emissions is yet to be realised. Observations show that the oceans have taken up around 84% of the total heating of the Earth's system over the last 40 years36. If global emissions were stopped today, some of this heat would be exchanged with the atmosphere as the system came back into equilibrium, causing an additional warming. Climate models project that the world is committed to a further warming of 0.5° - 1°C over several decades due to past emissions37. This warming is smaller than the warming expected if concentrations were stabilised at 430 ppm CO~~2~~e, because atmospheric aerosols mask a proportion of the current warming effect of greenhouse gases. Aerosols remain in the atmosphere for only a few weeks and are not expected to be present in significant levels at stabilisation38.\n\nIf annual emissions continued at today's levels, greenhouse gas levels would be close to double pre-industrial levels by the middle of the century. If this concentration were sustained, temperatures are projected to eventually rise by 2 - 5�C or even higher.\n\nProjections of future warming depend on projections of global emissions (discussed in chapter 7). If annual emissions were to remain at today's levels, greenhouse gas levels would reach close to 550 ppm CO~~2~~e by 205039. Using the lower and upper 90% confidence bounds based on the IPCC TAR range and recent research from the Hadley Centre, this would commit the world to a warming of around 2 - 5°C (Table 1.1). As demonstrated in Box 1.2, these two climate sensitivity distributions lie close to the centre of recent projections and are used throughout this Review to give illustrative temperature projections. Positive feedbacks, such as methane emissions from permafrost, could drive temperatures even higher.\n\nNear the middle of this range of warming (around 2 - 3°C above today), the Earth would reach a temperature not seen since the middle Pliocene around 3 million years ago40. This level of warming on a global scale is far outside the experience of human civilisation.\n\nTable 1.1 Temperature projections at stabilisation\n\nMeinshausen (2006) used climate sensitivity estimates from eleven recent studies to estimate the range of equilibrium temperature changes expected at stabilisation. The table below gives the equilibrium temperature projections using the 5 - 95% climate sensitivity ranges based on the IPCC TAR (Wigley and Raper (2001)), Hadley Centre (Murphy et al. 2004) and the range over all eleven studies. Note that the temperature changes expected prior to equilibrium, for example in 2100, would be lower.\n\nTemperature increase at equilibrium relative to pre-industrial (°C) Stabilisation level\n(ppm CO~~2~~ equivalent) IPCC TAR 2001\n(Wigley and Raper)\nHadley Centre\nEnsemble\nEleven Studies\n400 0.8 - 2.4 1.3 - 2.8 0.6 - 4.9\n450 1.0 - 3.1 1.7 - 3.7 0.8 - 6.4\n500 1.3 - 3.8 2.0 - 4.5 1.0 - 7.9\n550 1.5 - 4.4 2.4 - 5.3 1.2 - 9.1\n650 1.8 - 5.5 2.9 - 6.6 1.5 - 11.4\n750 2.2 - 6.4 3.4 - 7.7 1.7 - 13.3\n1000 2.8 - 8.3 4.4 - 9.9 2.2 - 17.1\n\nHowever, these are conservative estimates of the expected warming, because in the absence of an effective climate policy, changes in land use and the growth in population and energy consumption around the world will drive greenhouse gas emissions far higher than today. This would lead greenhouse gas levels to attain higher levels than suggested above. The IPCC projects that without intervention greenhouse gas levels will rise to 550 - 700 ppm CO~~2~~e by 2050 and 650 - 1200 ppm CO~~2~~e by 210041. These projections and others are discussed in Chapter 7, which concludes that, without mitigation, greenhouse gas levels are likely to be towards the upper end of these ranges. If greenhouse gas levels were to reach 1000 ppm, more than treble pre-industrial levels, the Earth would be committed to around a 3 - 10°C of warming or more, even without considering the risk of positive feedbacks (Table 1.1).
This chapter has so far considered only the expected changes in global average surface temperatures. However, this can often mask both the variability in temperature changes across the earth's surface and changes in extremes. In addition, the impacts on people will be felt mainly through water, driven by shifts in regional weather patterns, particularly rainfall and extreme events (more detail in Part II).\n\nIn general, higher latitudes and continental regions will experience temperature increases significantly greater than the global average.\n\nFuture warming will occur unevenly and will be superimposed on existing temperature patterns. Today, the tropics are around 15°C warmer than the mid-latitudes and more than 25°C warmer than the high latitudes. In future, the smallest temperature increases will generally occur over the oceans and some tropical coastal regions. The largest temperature increases are expected in the high latitudes (particularly around the poles), where melting snow and sea ice will reduce the reflectivity of the surface, leading to a greater than average warming. For a global average warming of around 4°C, the oceans and coasts generally warm by around 3°C, the mid-latitudes warm by more than 5°C and the poles by around 8°C.\n\nThe risk of heat waves is expected to increase (Figure 1.5). For example, new modelling work by the Hadley Centre shows that the summer of 2003 was Europe's hottest for 500 years and that human-induced climate change has already more than doubled the chance of a summer as hot as 2003 in Europe occurring.42 By 2050, under a relatively high emissions scenario, the temperatures experienced during the heatwave of 2003 could be an average summer. The rise in heatwave frequency will be felt most severely in cities, where temperatures are further amplified by the urban heat island effect.\n\nChanges in rainfall patterns and extreme weather events will lead to more severe impacts on people than that caused by warming alone.\n\nWarming will change rainfall patterns, partly because warmer air holds more moisture, and also because the uneven distribution of warming around the world will lead to shifts in large-scale weather regimes. Most climate models predict increases in rainfall at high latitudes, while changes in circulation patterns are expected to cause a drying of the subtropics, with northern Africa and the Mediterranean experiencing significant reductions in rainfall. There is more uncertainty about changes in rainfall in the tropics (Figure 1.6), mainly because of complicated interactions between climate change and natural cycles like the El Ni�o, which dominate climate in the tropics.43 For example, an El Ni�o event with strong warming in the central Pacific can cause the Indian monsoon to switch into a "dry mode", characterised by significant reductions in rainfall leading to severe droughts. These delicate interactions could cause abrupt shifts in rainfall patterns. This is an area that urgently needs more research because of the potential effect on billions of people, especially in South and East Asia (more detail in Part II).\n\n<<tiddler "Figure 1.5">>\n\n<<tiddler "Figure 1.6">>\nGreater evaporation and more intense rainfall will increase the risk of droughts and flooding in areas already at risk.45 It could also increase the size of areas at risk; one recent study, the first of its kind, estimates that the fraction of land area in moderate drought at any one time will increase from 25% at present to 50% by the 2090s, and the fraction in extreme drought from 3% to 30%46.\n\nHurricanes and other storms are likely to become more intense in a warmer, more energised world, as the water cycle intensifies, but changes to their location and overall numbers47 remain less certain. There is growing evidence the expected increases in hurricane severity are already occurring, above and beyond any natural decadal cycles. Recent work suggests that the frequency of very intense hurricanes and typhoons (Category 4 and 5) in the Atlantic Basin has doubled since the 1970s as a result of rising sea-surface temperatures.48 This remains an active area of scientific debate49. In higher latitudes, some models show a general shift in winter storm tracks towards the poles.50 In Australia, this could lead to water scarcity as the country relies on winter storms to supply water51.\n\nClimate change could weaken the Atlantic Thermohaline Circulation, partially offsetting warming in both Europe and eastern North America, or in an extreme case causing a significant cooling.\n\nThe warming effect of greenhouse gases has the potential to trigger abrupt, large-scale and irreversible changes in the climate system. One example is a possible collapse of the North Atlantic Thermohaline Circulation (THC). In the North Atlantic, the Gulf Stream and North Atlantic drift (important currents of the North Atlantic THC) have a significant warming effect on the climates of Europe and parts of North America. The THC may be weakened, as the upper ocean warms and/or if more fresh water (from melting glaciers and increased rainfall) is laid over the salty seawater.52 No complex climate models currently predict a complete collapse. Instead, these models point towards a weakening of up to half by the end of the century53. Any sustained weakening of the THC is likely to have a cooling effect on the climates of Europe and eastern North America, but this would only offset a portion of the regional warming due to greenhouse gases. A recent study using direct ocean measurements (the first of its kind) suggests that part of the THC may already have weakened by up to 30% in the past few decades, but the significance of this is not yet known.54 The potential for abrupt, large-scale changes in climate requires further research.\n\nSea levels will continue to rise, with very large increases if the Greenland Ice Sheet starts to melt irreversibly or the West Antarctic Ice Sheet (WAIS) collapses.\n\nSea levels will respond more slowly than temperatures to changing greenhouse gas concentrations. Sea levels are currently rising globally at around 3 mm per year and the rise has been accelerating55. According to the IPCC TAR, sea levels are projected to rise by 9 - 88 cm by 2100, mainly due to expansion of the warmer oceans and melting glaciers on land.56 However, because warming only penetrates the oceans very slowly, sea levels will continue to rise substantially more over several centuries. On past emissions alone, the world has built up a substantial commitment to sea level rise. One study estimates an existing commitment of between 0.1 and 1.1 metres over 400 years.57\n\n<<tiddler "Box 1.4">>\nAs global temperatures continue to rise, so do the risks of additional sea level contributions from large-scale melting or collapse of ice sheets. If the Greenland and West Antarctic ice sheets began to melt irreversibly, the world would be committed to substantial increases in sea level in the range 5 - 12 m over a timescale of centuries to millennia.65 The immediate effect would be a potential doubling of the rate of sea level rise: 1 - 3 mm per year from Greenland and as high as 5 mm per year from the WAIS.66 For illustration, if these higher rates were reached by the end of this century, the upper range of global sea level rise projections would exceed 1m by 2100. Both of these ice sheets are already showing signs of vulnerability, with ice discharge accelerating over large areas, but the thresholds at which large-scale changes are triggered remain uncertain (Box 1.4).
Climate change is a serious and urgent issue. While climate change and climate modelling are subject to inherent uncertainties, it is clear that human activities have a powerful role in influencing the climate and the risks and scale of impacts in the future. All the science implies a strong likelihood that, if emissions continue unabated, the world will experience a radical transformation of its climate. Part II goes on to discuss the profound implications that this will have for our way of life.\n\nThe science provides clear guidance for the analysis of the economics and policy. The following chapter examines the implications of the science for the structuring of the economics.
The Third Assessment Report of the IPCC gives the most comprehensive assessment of the science of climate change up to 2001 (IPCC 2001a,b). The summary for policymakers gives a good introduction to the more in-depth analyses of the three working groups. Maslin (2004) provides a more narrative description of climate change, including an overview of the history. Schellnhuber (2006) gives a good summary of the evolution of the science from early 2001 to 2005, including articles describing temperature projections based on new estimates of climate sensitivity (e.g. Meinshausen (2006)), positive feedbacks in the carbon cycle (e.g. Cox et al. (2006)) and several articles on the impacts of climate change.\n\nAnnan, J.D. and J.C. Hargreaves (2006): 'Using multiple observationally-based constraints to estimate climate sensitivity', Geophysical Research Letters 33: L06704\n\nArcher, D. (2005): 'Methane hydrates and anthropogenic climate change', Reviews of Geophysics, submitted, available from http://geosci.uchicago.edu/~archer/reprints/archer.ms.clathrates.pdf\n\nBarnett T.P., D.W. Pierce, K.M. AchutaRao et al. (2005): 'Penetration of human-induced warming into the world's oceans', Science 309: 284 - 287\n\nBengtsson, L., K. Hodges and E. Roeckner (2006): 'Storm tracks and climate change', Journal of Climate, in press.\n\nBrohan. P., J.J. Kennedy, I. Harris, et al. (2006): 'Uncertainty estimates in regional and global observed temperature changes: a new dataset from 1850'. Journal of Geophysical Research, 111, D12106, doi: 10.1029/2005JD006548\n\nBurke, E.J., S.J. Brown and N. Christidis (2006): 'Modelling the Recent Evolution of Global Drought and Projections for the Twenty-First Century with the Hadley Centre Climate Model', Journal of Hydrometeorology, 7(5):1113 - 1125\n\nBryden, H.L., H.R. Longworth and S.A. Cunningham (2005): 'Slowing of the Atlantic meridional overturning circulation at 25°N', Nature 438: 655-657\n\nChurch, J.A., and N.J. White (2006): 'A 20th century acceleration in global sea-level rise', Geophysical Research Letters, 33, L01602, doi: 10.1029/2005GL024826.\n\nCollins, M. and the CMIP Modelling Group (2005): 'El Nino - or La Nina-like climate change? Climate Dynamics' 24: 89-104\n\nCox, P.M., R.A. Betts, C.D. Jones, et al. (2000): 'Acceleration of global warming due to carbon-cycle feedbacks in a coupled climate model', Nature 408: 184-187\n\nCox P.M., C. Huntingford and C.D. Jones (2006): 'Conditions for Sink-to-Source Transitions and Runaway Feedbacks from the Land Carbon Cycle', in Avoiding dangerous climate change, H.J. Schellnhuber et al. (eds.), Cambridge: Cambridge University Press, pp.155 - 163.\n\nDavidson and Janssens (2006): 'Temperature sensitivity of soil carbon decomposition and feedbacks to climate change', Nature 440: 165-173\n\nDEFRA (2005): 'Climate change and the greenhouse effect: a briefing from the Hadley Centre', available from http://www.metoffice.com/research/hadleycentre/pubs/brochures/2005/climate_greenhouse.pdf\n\nEmanuel, K. (2005): 'Increased destructiveness of tropical cyclones over the past 30 years', Nature 436: 686-688\n\nForest, C.E., P.H. Stone and A.P. Sokolov (2006): 'Estimates PDFs of climate system properties including natural and anthropogenic forcings', Geophysical Research Letters 33: L01705, doi: 10.1029/2005GL023977\n\nFriedlingstein, P., P. Cox, R. Betts et al. (2006): 'Climate-carbon cycle feedback analysis: results from C4MIP model intercomparison', Journal of Climate, 19: 3337-3353\n\nFyfe, J.C. (2003): 'Extratropical southern hemisphere cyclones: Harbingers of climate change?' Journal of Climate 16, 2802-2805\n\nGedney, N., P.M. Cox and C. Huntingford (2004): 'Climate feedback from wetland methane emissions', Geophysical Research Letters 31 (20): L20503\n\nGeng, Q.Z. and M. Sugi (2003): 'Possible changes in extratropical cyclone activity due to enhanced greenhouse gases and aerosols - Study with a high resolution AGCM'. Journal of Climate 16: 2262-2274.\n\nGorham, E. (1991): 'Northern Peatlands: Role in the Carbon Cycle and Probable Responses to Climatic Warming', Ecological Applications 1: 182-195, doi: 10.2307/1941811\n\nGregory, J. and P. Huybrechts (2006): 'Ice sheet contributions to future sea level change', Phil Trans Royal Soc A 364: 1709 - 1731, doi: 10.1098/rsta.2006.1796\n\nHadley Centre (2005): 'Stabilising climate to avoid dangerous climate change - a summary of relevant research at the Hadley Centre', available from http://www.metoffice.com/research/hadleycentre/pubs/brochures\n\nHanna, E., P. Huybrechts, and I. Janssens, et al. (2005): 'Runoff and mass balance of the Greenland ice sheet: 1958-2003'. Journal of Geophysical Research 110, D13108, doi: 10.1029/2004JD005641\n\nHansen, J., M. Sato, R. Ruedy, et al. (2006): 'Global temperature change, Proceedings of the National Academy', 103: 14288-14293\n\nHope, P.K. (2006): 'Projected future changes in synoptic systems influencing southwest Western Australia. Climate Dynamics' 26: 765-780, doi: 10.1007/s00382-006-0116-x\n\nHuntington, T.G. (2006): 'Evidence for intensification of the global water cycle: review and synthesis', Journal of Hydrology 319: 1 - 13\n\nHuybrechts, P. and J. de Wolde (1999): 'The dynamic response of the Greenland Ice Sheet and Antarctic ice sheets to a multiple century climatic-warming', Journal of Climate 12: 2169-2188\n\nInternational ad hoc detection group (2005): 'Detecting and attributing external influences on the climate system: a review of recent advances', Journal of Climate 18: 1291-1314\n\nIntergovernmental Panel on Climate Change (2001a): 'Climate change 2001: summary for policymakers, A contribution of Working Groups I, II and III to the Third Assessment Report of the Intergovernmental Panel on Climate Change' [Watson RT, and the Core Writing Team (eds.)], Cambridge: Cambridge University Press.\n\nIntergovernmental Panel on Climate Change (2001b): 'Climate change 2001: the scientific basis. Contribution of Working Group I to the Third Assessment Report of the Intergovernmental Panel on Climate Change' [Houghton JT, Ding Y, Griggs DJ, et al. (eds.)], Cambridge: Cambridge University Press.\n\nJohannessen, O.M., K. Khvorostovsky, M.W. Miles et al. (2005): 'Recent ice-sheet growth in the interior of Greenland'. Science 310: 1013-1016\n\nKnutti, R., T.F. Stocker, F. Joos and G-K Plattner (2002): 'Constraints on radiative forcing and future climate change from observations and climate model ensembles', Nature 416: 719 - 723\n\nLawrence D.M. and A.G. Slater (2005): 'A projection of severe near-surface permafrost degradation during the 21st century', Geophysical Research Letters 32: L24401\n\nLambert S.J. and J.C. Fyfe (2006): 'Changes in winter cyclone frequencies and strengths simulated in enhanced greenhouse warming experiments: results from models participating in the IPCC diagnostic exercise', Climate Dynamics 1432, 0894\n\nLandsea, C. (2005): 'Atlantic hurricanes and global warming', Nature 438, E11-E12\n\nLevitus, S.J., J. Antonov and T. Boyer (2005): 'Warming of the world ocean 1955 - 2003', Geophysical Research Letters 32: L02604, doi:10.1029/2004GL021592\n\nLindzen, R.S., M-D Chou and A.Y. Hou (2001): 'Does the earth have an adaptive infrared iris?' Bulletin of the American Meteorological Society 82: 417-432\n\nMann, M.E., R.S. Bradley and M.K. Hughes (1999): 'Northern hemisphere temperatures during the past millennium: inferences, uncertainties, and limitations', Geophysical Research Letters, 26, 759-762.\n\nMaslin, M. (2004): 'Global warming: a very short introduction', New York: Oxford University Press.\n\nMeehl, G.A., W.M. Washington, W.D. Collins et al. (2005): 'How much more global warming and sea level rise?' Science 307:1769 - 1772\n\nMeinshausen, M. (2006): 'What does a 2°C target mean for greenhouse gas concentrations? A brief analysis based on multi-gas emission pathways and several climate sensitivity uncertainty estimates', Avoiding dangerous climate change, in H.J. Schellnhuber et al. (eds.), Cambridge: Cambridge University Press, pp.265 - 280.\n\nMurphy, J.M., D.M.H. Sexton D.N. Barnett et al. (2004): 'Quantification of modelling uncertainties in a large ensemble of climate change simulations', Nature 430: 768 - 772\n\nNational Research Council (2006): 'Surface temperature reconstructions for the past 2,000 years', available from http://www.nap.edu/catalog/11676.html\n\nNorth Greenland Ice Core Project (2004): 'High-resolution record of Northern Hemisphere climate extending into the last interglacial maximum', Nature 431: 147-151\n\nOrr, J.C., V.J. Fabry, O. Aumont et al. (2005): 'Anthropogenic ocean acidification over the twenty-first century and its impact on calcifying organisms', Nature 437: 681-686\n\nParmesan, C. and G. Yohe (2003): 'A globally coherent fingerprint of climate change impacts across natural systems', Nature 421: 37 - 42\n\nPearce, F. (2003): 'Land of the midnight sums', New Scientist 177: 2379\n\nPierrehumbert, R.T. (2004): 'Warming the world', Nature 432: 677, doi: 10.1038/432677a\n\nPielke, R. (2005): 'Meteorology: Are there trends in hurricane destruction?' Nature 438: E11\n\nRapley, C. (2006): 'The Antarctic ice sheet and sea level rise', in Avoiding dangerous climate change, Schellnhuber HJ (ed.), Cambridge: Cambridge University Press, pp. 25 - 28.\n\nRignot, E. and P. Kanagaratnam (2006): 'Changes in the velocity structure of the Greenland ice sheet. Science' 311: 986-990\n\nRoot, T.L., D.P. MacMynowski, M.D. Mastrandrea and S.H. Schneider (2005): 'Human-modified temperatures induce species changes: combined attribution', Proceedings of the National Academy of Sciences 102: 7465 - 7469\n\nSch�r, C., P.L. Vidale, D. L�thi, et al. (2004): 'The role of increasing temperature variability in European summer heatwaves', Nature 427: 332-336, doi: 10.1038/nature02300\n\nScheffer, M., V. Brovkin and P. Cox (2006): 'Positive feedback between global warming and the atmospheric CO~~2~~ concentration inferred from past climate change'. Geophysical Research Letters 33, L10702\n\nSchellnhuber, H.J., W. Cramer, N. Nakicenovic et al. (eds.) (2006): 'Avoiding dangerous climate change', Cambridge: Cambridge University Press.\n\nSchlesinger, M.E., J. Yin, G. Yohe, et al. (2006): 'Assessing the risk of a collapse of the Atlantic Thermohaline Circulation', in Avoiding dangerous climate change, H.J. Schellnhuber et al. (eds.) Cambridge: Cambridge University Press, pp. 37 - 47.\n\nScholze, M., K. Wolfgang, N. Arnell and C. Prentice (2006): 'A climate-change risk analysis for world ecosystems', Proceedings of the National Academy of Sciences 103: 13116 - 13120\n\nSiegenthaler U, Stocker T.F., Monnin E, et al. (2005) Stable carbon cycle-climate relationship during the late Pleistocene, Science 310: 1313 - 1317\n\nShepherd, A., D. Wingham, T. Payne and P. Skvarca (2003): 'Larsen Ice Shelf has progressively thinned', Science 302: pp 856-859, doi: 10.1126/science.1089768\n\nSmith, L.C., Y. Sheng, G.M. MacDonald, et al. (2005): 'Disappearing artic lakes'. Science, 308: 1429\n\nSoden, B.J., D.L. Jackson, V. Ramaswamy, et al. (2005): 'The radiative signature of upper tropospheric moistening', Science, 310: 841-844\n\nStainforth, D., T. Aina, C. Christensen, et al. (2005): 'Uncertainty in predictions of the climate response to rising levels of greenhouse gases', Nature 433: 403-406\n\nStott P.A., D.A. Stone and M.R. Allen (2004): 'Human contribution to the European heatwave of 2003', Nature 432: 610 - 614\n\nTorn, M.SS and J. Harte (2006): 'Missing feedbacks, asymmetric uncertainties, and underestimation of future warming', Geophysical Research Letters 33: L10703\n\nUS Climate Change Programme (2006): 'Temperature trends in the lower atmosphere: steps for understanding and reconciling differences', available from http://www.climatescience.gov/Library/sap/sap1-1/finalreport\n\nVaughan, D.G. and J.R. Spouge (2002): 'Risk estimation of collapse of the West Antarctic ice sheet', Climatic Change 52: 65-91\n\nvon Storch, H., E. Zorita, J.M. Jones, et al. (2004): Reconstructing past climate from noisy data, Science 306: 679-682\n\nWalter, K.M., S.A. Zimov, J.P. Chanton, et al. (2006): 'Methane bubbling from Siberian thaw lakes as a positive feedback to climate warming', Nature 443: 71-75\n\nWebster, P.J., G.J. Holland, J.A. Curry and H-R Chang (2005): 'Changes in tropical cyclone number, duration, and intensity in a warming environment', Science 309,1844-1846\n\nWetherald, R.T. and S. Manabe (2002): 'Simulation of hydrologic changes associated with global warming', Journal of Geophysical Research 107: 4379\n\nWigley, T.M.L. (1985): 'Impact of extreme events', Nature 316: 106 - 107\n\nWigley, T.M.L. and S.C.B. Raper (2001): 'Interpretation of high projections for global-mean warming', Science 293: 451-454\n\nWigley, T.M.L. (2005): 'The climate change commitment', Science 307: 1766 - 1769\n\nWood, R., M. Collins, J. Gregory, et al. (2006): 'Towards a risk assessment for shutdown of the Atlantic Thermohaline Circulation', in Avoiding dangerous climate change, H.J Schellnhuber et al. (eds.), Cambridge: Cambridge University Press, pp. 49 - 54.\n\nZwally, H.J., M.B. Giovinetto, J. Li, et al. (2006): 'Mass changes of the Greenland and Antarctic ice sheets and shelves and contributions to sea-level rise: 1992 - 2002', Journal of Glaciology 51: 509 - 527
1 The fourth assessment is due in 2007. The scientific advances since the TAR are discussed in Schellnhuber et al. (2006)\n\n2 The human origin of the accumulation of carbon dioxide in the atmosphere is demonstrated through, for example, the isotope composition and hemispheric gradient of atmospheric carbon dioxide (IPCC 2001a).\n\n3 In this Review, the total radiative effect of greenhouse gases is quoted in terms of the equivalent concentration (in ppm) of carbon dioxide and will include the six Kyoto greenhouse gases. It will not include other human influences on the radiation budget of the atmosphere, such as ozone, land properties (i.e. albedo), aerosols or the non-greenhouse gas effects of aircraft unless otherwise stated, because the radiative forcing of these substances is less certain, their effects have a shorter timescale and they are unlikely to form a substantial component of the radiative forcing at equilibrium (they will be substantially decreasing over the timescale of stabilisation). The definition excludes greenhouse gases controlled under the Montreal Protocol (e.g. CFCs). Note however, that such effects are included in future temperature projections. The CO~~2~~ equivalence here measures only the instantaneous radiative effect of greenhouse gases in the atmosphere and ignores the lifetimes of the gases in the atmosphere (i.e. their future effect).\n\n4 The 1980-2004 average, based on data provided by Prof K Shine and Dr L Gohar, Dept. of Meteorology, University of Reading.\n\n5 Siegenthaler et al. (2005) using data from ice cores. The same research groups recently presented analyses at the 2006 conference of the European Geosciences Union, which suggest that carbon dioxide levels are unprecedented for 800,000 years.\n\n6 Kyoto greenhouse gases are the six main greenhouse gases covered by the targets set out in the Kyoto Protocol.\n\n7 Based on the error on the radiative forcing (in CO~~2~~ equivalent) of all long-lived greenhouse gases from Figure 6.6, IPCC (2001b)\n\n8 Hansen et al. (2006)\n\n9 Parmesan and Yohe (2003) and Root et al. (2005) have correlated a shift in timing and distribution of 130 different plant and animal species with observed climate change.\n\n10 IPCC (2001a) - this key conclusion has been supported in the Joint Statement of Science Academies in 2005 and a report from the US Climate Change Science Programme (2006).\n\n11 National Research Council (2006) - a report requested by the US Congress\n\n12 Barnett et al. (2005a)\n\n13 For example, Ad hoc detection and attribution group (2005)\n\n14 Aerosols are tiny particles in the atmosphere also created by human activities (e.g. sulphate aerosol emitted by many industrial processes). They have several effects on the atmosphere, one of which is to reflect solar radiation and therefore, cool the surface. This effect is thought to have offset some of the warming effect of greenhouse gases, but the exact amount is uncertain.\n\n15 For example, Pearce (2003), Pierrehumbert (2004)\n\n16 i.e. the incremental increase in radiative forcing due to an increase in concentration (from pre-industrial) will fall to around half of the initial increase when concentrations reach around 600ppm, a quarter at 1200ppm and an eighth at 2400ppm. Note that other greenhouse gases, such as methane and nitrous oxide, have a linear relationship.\n\n17 It has been suggested that water vapour could act as a negative feedback on warming, on the basis that the upper atmosphere would dry out as it warms (Lindzen 2005). Re-analysis of satellite measurements published last year indicated that in fact the opposite is happening (Soden et al. 2005). Over the past two decades, the air in the upper troposphere has become wetter, not drier, countering Lindzen's theory and confirming that water vapour is having a positive feedback effect on global warming. This positive feedback is a major driver of the indirect warming effects from greenhouse gases.\n\n18 Calculated using method shown in Meinshausen (2006).\n\n19 Meinshausen (2006)\n\n20 An increase in low clouds would have a negative feedback effect, as they have little effect on infrared radiation but block sunlight, causing a local cooling. Conversely, an increase in high clouds would trap more infrared radiation, amplifying warming.\n\n21 Friedlingstein et al. (2006)\n\n22 Cox et al. (2000) with the Hadley Centre model and Scholze et al (2006) with several models.\n\n23 Gorham et al. (1991)\n\n24 Walter et al. (2006)\n\n25 Emissions measured in CO~~2~~ equivalent are weighted by their global warming potential (see chapter 8).\n\n26 These estimates come from recent papers by Torn and Harte (2006) and Scheffer et al. (2006), which estimate the scale of positive feedbacks from release of carbon dioxide and methane from past natural climate change episodes, e.g. Little Ice Age and previous inter-glacial period, into current climate models.\n\n27 One study to date has examined this question and suggested that a run away effect is unlikely, at least for the land-carbon sink (Cox et al. 2006). It remains unclear how the risk of run-away climate change would change with the inclusion of other feedbacks.\n\n28 Friedlingstein et al. (2006) found that all eleven climate models that explicitly include carbon cycle feedbacks showed a weakening of carbon sinks.\n\n29 Orr et al. (2005)\n\n30 Friedlingstein et al. (2006)\n\n31 Lawrence and Slater (2005), based on IPCC A2 Scenario\n\n32 Summarised in Davidson and Janssens (2006) (wetlands) and Archer (2005) (permafrost) - CO~~2~~ equivalent emissions (chapter 7).\n\n33 Walter et al. (2006) and Smith et al. (2005)\n\n34 Estimates of potential methane emissions from thawing permafrost range around 2 - 4GtCO~~2~~/yr. Wetlands emit equivalent to 2 - 6 GtCO~~2~~/yr and studies project that this may rise by up to 80%. Davidson & Janssens (2006), Gedney et al. (2004) and Archer (2005).\n\n35 Hadley Centre (2005)\n\n36 Barnett et al. (2005a) and Levitus et al. (2005)\n\n37 Wigley (2005) and Meehl et al. (2005) look at the amount of warming "in the pipeline" using different techniques.\n\n38 In many countries, aerosol levels have already been reduced by regulation because of their negative health effects.\n\n39 For example, 45 years at 2.5 ppm/yr gives 112.5ppm. Added to the current level, this gives 542.5ppm in 2050.\n\n40 Hansen et al. (2006)\n\n41 Based on the IPCC TAR central radiative forcing projections for the six illustrative SRES scenarios (IPCC 2001b).\n\n42 According to Stott et al. (2004), climate change has increased the chance of the 2003 European heatwave occurring by between 2 and 8 times. In 2003, temperatures were 2.3°C warmer than the long-term average.\n\n43 In an El Ni�o year (around once every 3-7 years), the pattern of tropical sea surface temperatures changes, with the eastern Pacific warming significantly. This radically alters large-scale atmospheric circulations across the globe, and causes rainfall patterns to shift, with some regions experiencing flooding and others severe droughts. As the world warms, many models suggest that the East Pacific may warm more intensely than the West Pacific, mimicking the pattern of an El Ni�o, although significant uncertainties remain. Models do not yet agree on the nature of changes in the frequency or intensity of the El Ni�o (Collins and the CMIP Modelling Groups 2005).\n\n44 Sch�r C et al. (2004)\n\n45 Huntington (2006) reviewed more than 50 peer-reviewed studies and found that many aspects of the global water cycle have intensified in the past 50 years, including rainfall and evaporation. Modelling work by Wetherald & Manabe (2002) confirms that warming will increase rates of both precipitation and evaporation.\n\n46 Burke, Brown and Christidis (2006) using one model under a high emissions scenario. Other climate models are needed to verify these results. The study uses one commonly used drought index: The Palmer Drought Severity Index (PDSI). This uses temperature and rainfall data to formulate a measure of 'dryness'. Other drought indices do not show such large changes.\n\n47 For example, Lambert and Fyfe (2006) and Fyfe (2003)\n\n48 Emanuel (2005); Webster et al. (2005)\n\n49 Pielke (2005); Landsea (2005)\n\n50 For example, Geng and Sugi (2003); Bengtsson, Hodges and Roeckner (2006)\n\n51 Hope (2006)\n\n52 Summarised in Schlesinger et al. (2006)\n\n53 Wood et al. (2006). Complex climate models project a weakening of between 0% and 50% by the end of the century.\n\n54 Bryden et al. (2005). It is unclear whether the weakening is part of a natural cycle or the start of a downward trend.\n\n55 Church and White (2006)\n\n56 IPCC (2001b). This range covers several sources of uncertainty, including emissions, climate sensitivity and ocean responses\n\n57 Wigley (2005). The uncertainty reflects a range of climate sensitivities, aerosol forcings and melt-rates.\n\n58 For example, Zwally et al. 2006 and Johannessen et al. 2005\n\n59 For example, Hanna et al. 2005 and Rignot and Kanagaratnam 2006\n\n60 Lower and higher estimates based on Huybrechts and de Wolde (1999) and Gregory and Huybrechts (2006), respectively.\n\n61 North Greenland Ice Core Project (2004). The warm temperatures in the Northern Hemisphere during the previous interglacial reflected a maximum in the cycle of warming from the Sun due to the orbital position of the Earth. In the future, Greenland is expected to experience some of the largest temperature changes. A 4-5°C greenhouse warming of Greenland would correspond to a global mean temperature rise of around 3°C (Gregory and Huybrechts (2006)).\n\n62 Rapley (2006)\n\n63 Shepherd et al. 2003. The collapse of Larsen B followed the collapse in 1995 of the smaller Larsen A ice shelf.\n\n64 Zwally et al. (2006)\n\n65 Based on 7m and 5m from the Greenland and West Antarctic ice sheets, respectively. Rapley (2006) and Wood et al. (2006)\n\n66 Huybrechts and DeWolde (1999) simulated the melting of the Greenland Ice Sheet for a local temperature rise of 3°C and 5.5°C. These scenarios led to a contribution to sea level rise of 1m and 3m over 1000 years (1mm/yr and 3mm/yr), respectively. Possible contributions from the West Antarctic Ice Sheet (WAIS) remain highly uncertain. In an expert survey reported by Vaughan and Spouge (2002), most glaciologists agree that collapse might be possible on a thousand-year timescale (5mm/yr), but that this contribution is unlikely to be seen in this century. Few scientists considered that collapse might occur on a century timescale.
The ''60th Annual DPI/NGO Conference'' Ro be held at ''United Nations Headquarters'' from September 5-7, 2007.
This web site is based on a TiddlyWiki platform - a unique and brilliant design for a self-contained, [[Creative Commons]] "Wiki". Wiki is a Hawaiian word meaning //swift// or //swiftly//, and TiddlyWiki is the wikiest wiki to date., Unlike most web sites that consist of multiple, linked web pages, all of the content in a TiddlyWiki is contained in a single web page, that contains numerous sub-pages, known as "tiddlers".\n\nA TiddlyWiki page uses simple formatting codes for its tiddlers - similar, but not identical to the codes used in <<wikipedia Wikipedia>> and each tiddler can have one or more "tags" or "key words" that are displayed adjacent to the tiddler. This makes TiddlyWiki the easiest and quickest platform for creating and maintaining a web site.\n\nFrom a design standpoint, what makes TiddlyWiki unique is that not only can tiddlers contain and siplay text, images, links, etc, but the appearance and format of a TiddlyWiki is defined by "style sheets and "styles" that are themselves contained in tiddlers. In addition, a tiddler can include Javascript - the language that powers TiddlyWiki - that can add very useful features over and above those in the standard TiddlyWiki.\n\n
"Tiddlers" are the building blocks of TiddlyWiki. Each "entry" or "post" is a Tiddler. There are also SpecialTiddlers that control the MainMenu, SiteTitle, SiteSubtitle, and list of DefaultTiddlers that display on start up.
The team was led by Siobhan Peters. Team members included Vicki Bakhshi, Alex Bowen, Catherine Cameron, Sebastian Catovsky, Di Crane, Sophie Cruickshank, Simon Dietz, Nicola Edmondson, Su-Lin Garbett, Lorraine Hamid, Gideon Hoffman, Daniel Ingram, Ben Jones, Nicola Patmore, Helene Radcliffe, Raj Sathiyarajah, Michelle Stock, Chris Taylor, Tamsin Vernon, Hannah Wanjie, and Dimitri Zenghelis.\n\nWe are very grateful to the following organisations for their invaluable contributions throughout the course of the Review: Vicky Pope and all those who have helped us at the Hadley Centre for Climate Prediction; Claude Mandil, Fatih Birol and their team at the International Energy Agency; Francois Bourguignon, Katherine Sierra, Ken Chomitz, Maureen Cropper, Ian Noble and all those who have lent their support at the World Bank; the OECD, EBRD, IADB, and UNEP; Rajendra Pachauri, Bert Metz, Martin Parry and others at the IPCC; Chatham House; as well as Martin Rees and the Royal Society.\n\nMany government departments and public bodies have supported our work, with resources, ideas and expertise. We are indebted to them. They include: HM Treasury, Cabinet Office, Department for Environment Food and Rural Affairs, Department of Trade and Industry, Department for International Development, Department for Transport, Foreign and Commonwealth Office, and the Office of Science and Innovation. We are also grateful for support and assistance from the Bank of England and the Economic and Social Research Council, and for advice from the Environment Agency and Carbon Trust.\n\nWe owe thanks to the academics and researchers with whom we have worked closely throughout the Review. A special mention goes to Dennis Anderson who contributed greatly to our understanding of the costs of energy technologies and of technology policy, and has provided invaluable support and advice to the team. Special thanks too to Halsey Rogers and to Tony Robinson who worked with us to edit drafts of the Review. And we are very grateful to: Neil Adger, Sudhir Anand, Nigel Arnell, Terry Barker, John Broome, Andy Challinor, Paul Collier, Sam Fankhauser, Michael Grubb, Roger Guesnerie, Cameron Hepburn, Dieter Helm, Claude Henry, Chris Hope, Paul Johnson, Paul Klemperer, Robert May, David Newbery, Robert Nicholls, Peter Sinclair, Julia Slingo, Max Tse, Rachel Warren and Adrian Wood.\n\nThroughout our work we have learned greatly from academics and researchers who have advised us, including: Philippe Aghion, Shardul Agrawala, Edward Anderson, Tony Atkinson, Paul Baer, Philip Bagnoli, Hewson Baltzell, Scott Barrett, Marcel Berk, Richard Betts, Ken Binmore, Victor Blinov, Christopher Bliss, Katharine Blundell, Severin Borenstein, Jean-Paul Bouttes, Alan Budd, Frances Cairncross, Daniel Cullenward, Larry Dale, Victor Danilov-Daniliyan, Amy Davidsen, Angus Deaton, Richard Eckaus, Jae Edmonds, Jorgen Elmeskov, Paul Epstein, Gunnar Eskeland, Alexander Farrell, Brian Fender, Anthony Fisher, Meredith Fowley, Jeffrey Frankel, Jose Garibaldi, Maryanne Grieg-Gran, Bronwyn Hall, Jim Hall, Stephane Hallegate, Kate Hampton, Michael Hanemann, Geoffrey Heal, Merylyn Hedger, Molly Hellmuth, David Henderson, David Hendry, Marc Henry, Margaret Hiller, Niklas Hoehne, Bjart Holtsmark, Jean- Charles Hourcade, Jo Hossell, Alistair Hunt, Saleem Huq, Mark Jaccard, Sarah Joy, Jiang Kejun, Ian Johnson, Tom Jones, Dale Jorgenson, Paul Joskow, Kassim Kulindwa, Daniel Kammen, Jonathan K�hler, Paul Krugman, Sari Kovats, Klaus Lackner, John Lawton, Li Junfeng, Lin Erda, Richard Lindzen, Bj�rn Lomborg, Gordon MacKerron, Joaquim Oliveira Martins, Warwick McKibbin, Robert Mendelsohn, Evan Mills, Vladimir Milov, James Mirrlees, Richard Morgenstern, Robert Muir-Wood, Justin Mundy, Gustavo Nagy, Neboj�a Nakicenovic, Karsten Neuhoff, Greg Nimmet, J.C Nkomo, William Nordhaus, David Norse, Anthony Nyong, Pan Jiahua, John Parsons, Cedric Philibert, Robert Pindyck, William Pizer, Oleg Pluzhnikov, Jonathon Porritt, Lant Pritchett, John Reilly, Richard Richels, David Roland-Holst, Cynthia Rosenzweig, Joyashree Roy, Jeffrey Sachs, Mark Salmon, Alan Sanstad, Mark Schankerman, John Schellnhueber, Michael Schlesinger, Ken Schomitz, Amartya Sen, Robert Sherman, P. R. Shukla, Brian Smith, Leonard Smith, Robert Socolow, David Stainforth, Robert Stavins, Joe Stiglitz, Peter Stone, Roger Street, Josu� Tanaka, Evgeniy Sokolov, Robert Solow, James Sweeney, Richard Tol, Asbjorn Torvanger, Laurence Tubiana, Steven Ward, Paul Watkiss, Jim Watson, Martin Weitzman, Hege Westskog, John Weyant, Tony White, Gary Yohe, Ernesto Zedillo and Zou Ji.\n\nWe are grateful to the leaders, officials, academics, NGO staff and business people who assisted us during our visits to: Brazil, Canada, China, the European Commission, France, Germany, Iceland, India, Japan, Mexico, Norway, Russia, South Africa and the USA.\n\nAnd thanks to the numerous business leaders and representatives who have advised us, including, in particular, John Browne, Paul Golby, Jane Milne, Vincent de Rivaz, James Smith, Adair Turner, and the Corporate Leaders Group.\n\nAlso to the NGOs that have offered advice and help including: Christian Aid, The Climate Group, Friends of the Earth, Global Cool, Green Alliance, Greenpeace, IIED, IPPR, New Economics Foundation, Oxfam, Practical Action, RSPB, Stop Climate Chaos, Tearfund, Women's Institute, and WWF UK.\n\nFinally, thanks also go to Australian Antarctic Division for permission to use the picture for the logo and to David Barnett, for designing the logo.
|>|''A'' |\n|~AAs |Assigned Amounts |\n|ACT MAP |MAP Accelerated Technology Scenario (IEA - Energy Technology Perspectives publication 2006) |\n|ADB |Asian Development Bank |\n|AOSIS |Alliance Of Small Island States |\n|AR (~I-IV) |Assessment Report (first-fourth) |\n|>|''B'' |\n|BAU |Business As Usual |\n|bcm |Billion cubic meters (unit of volume, e.g. for gas) |\n|BGE |Balanced Growth Equivalent |\n|Bl |Barrel of oil |\n|Boe |Barrels of oil equivalent |\n|>|''C'' |\n|C |Carbon (to convert 1 tonne of C into CO~~2~~, multiply by 12/44). |\n|CBA |Cost Benefit Analysis |\n|CCGT |Combined Cycle Gas Turbine |\n|CCS |Carbon Capture and Storage |\n|CDM |Clean Development Mechanism |\n|CER |Certified Emission Reduction |\n|~CFCs |Chloro Fluoro Carbons |\n|CFL |Compact Fluorescent Lamp |\n|~CH4 |Methane (greenhouse gas) |\n|CGE |Computable General Equilibrium |\n|CHP |Combined Heat and Power |\n|CO~~2~~ |Carbon dioxide |\n|CO~~2~~e |CO~~2~~ equivalent |\n|CSD |Commission for Sustainable Development |\n|>|''D'' |\n|dCHP |Decentralised Combined Heat and Power |\n|DEFRA |UK Department for Environment, Food and Rural Affairs |\n|DFID |UK Department for International Development |\n|DFT |UK Department for Transport |\n|DTI |UK Department for Trade and Industry |\n|>|''E'' |\n|E |Exa: 10 to the power of 18 |\n|EBRD |European Bank for Reconstruction and Development |\n|EC |European Commission |\n|EIF |Energy Investment Framework |\n|EIT |Economy In Transition |\n|EMAS |Environmental Management Assistance System |\n|EMF |Energy Modelling Forum (Stanford University) |\n|EPA |Environmental Protection Agency |\n|ESCO |Energy Service Company |\n|ETS |Emission Trading System (EU) |\n|EU |European Union |\n|>|''F'' |\n|FCCC |Framework Convention on Climate Change (UN) |\n|FDI |Foreign Direct Investment |\n|FOB |Free on Board |\n|>|''G'' |\n|G |Giga: 10 to the power of 9 |\n|GATT |General Agreement on Trade and Tariffs |\n|GCM |Global Climate Model |\n|GDP |Gross Domestic Product |\n|GEF |Global Environment Facility |\n|GHG |Greenhouse Gas |\n|GMT |Global Mean Temperature |\n|GNP |Gross National Product |\n|GPG |Global Public Goods |\n|GPP |Gross Primary Production |\n|~GtC |Gigatonne of Carbon |\n|~GtCO~~2~~e |Gigatonne of Carbon Dioxide equivalent |\n|GWP |Global Warming Potential or Gross World Product |\n|>|''H'' |\n|HDI |Human Development Index |\n|HFC |Hydro Fluoro Carbon |\n|HMT |UK Her Majesty's Treasury |\n|HVAC |Heating, Ventilation and Air Conditioning |\n|>|''I'' |\n|~I-O |~Input-Output |\n|IA(M) |Integrated Assessment (Model) |\n|IAEA |International Atomic Energy Agency |\n|IEA |International Energy Agency |\n|IET |International Emission Trading |\n|IIASA |International Institute for Applied System Analysis |\n|IMCP |Innovation Modelling Comparison Project |\n|IMF |International Monetary Fund |\n|IPCC |Intergovernmental Panel on Climate Change |\n|IPR |Intellectual property rights |\n|ISIC |International Standard Industrial Classification |\n|ISO |International Standardisation Organization |\n|IT |Information Technology |\n|ITC |Induced Technical Change |\n|>|''J'' |\n|J |Joule = Newton x meter (International Standard unit of energy) |\n|JI |Joint Implementation |\n|JRC |Joint Research Centre (EU) |\n|>|''K'' |\n|K |Kilo: 10 to the power of 3 |\n|~KWh |Kilowatt hour |\n|>|''L'' |\n|Lbs |Pounds (unit of weight. 1 lbs = 0.454 kg) |\n|LDC |Least Developed Country |\n|LIC |Low Income Country |\n|LNG |Liquid Natural Gas |\n|LPG |Liquid Petroleum Gas |\n|>|''M'' |\n|M |Mega: 10 to the power of 6 |\n|MAC |Marginal Abatement Cost |\n|~MERs |Market Exchange Rates |\n|~MDGs |Millennium Development Goals |\n|MEA |Multilateral Environmental Agreements |\n|MIC |Middle Income Country |\n|MIT |Massachusetts Institute of Technology |\n|Mtoe |Mega tonnes oil equivalent |\n|>|''N'' |\n|~N2O |Nitrous oxide (greenhouse gas) |\n|NACE |Nomenclature des Activit�s dans la Communaut� Europ�enne (index of business activities in the EU) |\n|NAFTA |North American Free Trade Agreement |\n|NAP |National allocation plan |\n|~NCGGs |~Non-Carbon Greenhouse Gases |\n|NGO |~Non-Governmental Organization |\n|NIC |Newly Industrialized Country |\n|NMHC |~Non-Methane Hydro Carbon |\n|~NOx |Nitrogen oxides (local air pollutants) |\n|>|''O'' |\n|ODA |Official Development Assistance |\n|ODS |Ozone Depleting Substances |\n|OECD |Organization for Economic Co-operation and Development |\n|OPEC |Organisation of Petroleum Exporting Countries |\n|>|''P'' |\n|P |Peta: 10 to the power of 15 |\n|PFC |Per Fluoro Carbon |\n|ppm [ v / w ] |parts per million [by volume / weight] |\n|PPP |Purchasing Power Parity |\n|>|''Q'' |\n|~QELRCs |Quantified Emission Limitation or Reduction Commitments |\n|>|''R'' |\n|R&D |Research and Development |\n|RD&D |Research, Development and Demonstration |\n|RFF |Resources for the Future |\n|>|''S'' |\n|SAR |Second Assessment Report (by IPCC) |\n|SBSTA |Subsidiary Body for Scientific and Technological Advice |\n|SCC |Social Cost of Carbon |\n|SD |Sustainable Development |\n|~SOx |Sulphur dioxide |\n|~SMEs |Small and Medium Enterprises |\n|SRES |Special Report on Emissions Scenarios |\n|SRLULUCF |Special Report on ~Land-Use, ~Land-Use Change and Forestry |\n|>|''T'' |\n|T |Tera: 10 to the power of 12 |\n|TAR |Third Assessment Report (by IPCC) |\n|tce |Tonnes of coal equivalent |\n|THC |Thermohaline Circulation |\n|Toe |Tonnes of oil equivalent. (Mtoe - mega tonnes of oil equivalent). |\n|TPES |Total Primary Energy Supply |\n|TWA |Tolerable Windows Approach |\n|>|''U'' |\n|UK |United Kingdom |\n|UN |United Nations |\n|UNCED |UN Conference on Environment and Development |\n|UNDP |UN Development Programme |\n|UNEP |UN Environment Programme |\n|UNFCCC |UN Framework Convention on Climate Change |\n|US/USA |United States (of America) |\n|US CCSP |United States Climate Change Science Programme |\n|US EIA |United States Energy Information Administration |\n|>|''V'' |\n|VAT |Value Added Tax |\n|VOC |Volatile organic compound |\n|>|''W'' |\n|W |Watt = Joule/second (International Standard unit of power) |\n|WBCSD |World Business Council for Sustainable Development |\n|WCED |World Commission on Environment and Development |\n|WEC |World Energy Council |\n|WEO |World Economic Outlook |\n|WG (I - III) |Working Group (One to Three) of the IPCC |\n|Wh |Watt hour |\n|WHO |World Health Organization (UN) |\n|WRI |World Resources Institute |\n|WTA |Willingness To Accept compensation |\n|WTO |World Trade Organization |\n|WTP |Willingness To Pay |\n|WWF |World Wildlife Fund |
|@@[[About this web site]]@@ +++ [[TiddlyPerfect]] -<br>[[TiddlyPerfect Sites]] -<br>TiddlyWiki -<br>DataPerfect -<br>[[Tiddlers]] - ===|\n|[[User Options]] +++ [[Search Options]] -<br><<fontSize "font-size:">> -<br>[[Editing Options]] - ===|\n|<<search>>|\n|<<jump>><<renameButton 'jump to an open tiddler'>>|\n|<<closeAll>><<renameButton 'close all tiddlers'>>|\n|<<permaview>>|\n|<<newTiddler "New Tiddler" jomtien>>|\n|<<saveChanges>>|\n|[[Tiddler Administration]] +++ [[Formatting Tiddlers]] +++ [[Formatting Text]] -<br>[[Headers & Outlines]] -<br>[[Tiddly Links]] - <br>[[Tables]] -<br>[[Images]] - === <br>[[Tiddler Lists]] +++ [[Basic Tiddler Lists]] -<br>[[Alphabetical Tiddlers]] -<br>[[Tiddler Timelines]] +++ [[Tiddler Timeline]] -<br>[[Reverse Timeline]] -<br>[[Event Timeline]] - === <br>[[Shadow Tiddlers]] -<br>[[Missing Tiddlers]] -<br>[[Imported Tiddlers]] -<br>[[Included TiddlyWikis]] - === <br>[[Menus]] +++ [[Main Menu|MainMenu]] -<br>[[Administrative Menu]] -<br>[[Hover Menu|HoverMenu]] -<br>[[Setup Menu]] -<br>[[DataPerfect Menus]] -<br>[[Browser Menus]] -<br>[[Building Menus]] -<br>[[Desktop Menus]] - === <br>[[Default Tiddlers|DefaultTiddlers]] -<br>[[Import Tiddlers]] -<br> [[Tagging]] +++ [[Tiddler Tags]] -<br>[[IntelliTagger]] -<br>[[Toggle Tags]] -<br>[[Site Maps]] -<br>[[Tag Adder]] -<br>[[TagglyTagging]] -<br>[[Monkey Tagger]] - === -<br>[[Plugin Macros]] -<br> [[Templates & Stylesheets]] +++ PageTemplate -<br>ViewTemplate -<br>EditTemplate -<br>StyleSheetLayout -<br>StyleSheetColors -<br>[[MainMenuStyles]] -<br>[[TagglyTaggingStyles]] -<br>[[Colour Palette]] - === ===|\n|<html><a href="http://bluedot.us/Authoring.aspx" onclick="{var w=window;w.l=w.location;w.SdP='';w.bU=(w.l.protocol=='https:'?'https://'+w.SdP:'http://')+'bluedot.us';w.eUC=encodeURIComponent;function fBkF(){w.l.href=w.bU+'/Authoring.aspx?u='+w.eUC(w.l.href)+'&amp;t='+w.eUC(document.title);}w.gT=w.setTimeout(fBkF,6999);w.d=w.document;w.sT=w.d.body;w.o=w.d.createElement('scri'+'pt');if(typeof w.o!='object')fBkF();w.o.setAttribute('src',w.bU+'/js/Authoring.js');w.o.setAttribute('type','text/javascript');void(w.sT.appendChild(w.o));if(w.event){w.event.returnValue=false;}return false;}" id="BlueDotPartner"><img src="http://bluedot.us/images/partner_79x16_blue.gif" style="border:none"/></a> - <a href="http://del.icio.us/post" onclick="window.open('http://del.icio.us/post?v=4&noui&jump=close&url='+encodeURIComponent(location.href)+'&title='+encodeURIComponent(document.title), 'delicious','toolbar=no,width=700,height=400'); return false;"><img src="http://images.del.icio.us/static/img/delicious.small.gif"> del.icio.us</a></html>|\n|@@color:#ffffff;mmmmmmmmmmmmmmmmmmmm@@|
[[Administrative Menu]] - attached to base of the [[Main Menu|MainMenu]]\n<<tiddler "Administrative Menu">>
<<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\n<<option chkUseInclude>> Include ~TiddlyWikis (IncludeList | IncludeState | [[help|http://tiddlywiki.abego-software.de/#%5B%5BIncludePlugin%20Documentation%5D%5D]])\n^^(Reload this ~TiddlyWiki to make changes become effective)^^\n<<option chkSearchTitles>> Search in tiddler titles\n<<option chkSearchText>> Search in tiddler text\n<<option chkSearchTags>> Search in tiddler tags\n<<option chkSearchTitlesFirst>> Search results show title matches first\n<<option chkSearchList>> Search results show list of matching tiddlers\n<<option chkSearchIncremental>> Incremental searching\n<<option chkSearchTitles>> Search in tiddler titles\n<<option chkSearchText>> Search in tiddler text\n<<option chkSearchTags>> Search in tiddler tags\n<<option chkSearchTitlesFirst>> Search results show title matches first\n<<option chkSearchList>> Search results show list of matching tiddlers\n<<option chkSearchIncremental>> Incremental searching\n''Private Settings: ''<<option chkUsePrivateSettings>> Use private settings. <<option chkMakeSettingPrivateWhenChanged>> Make setting private when changed.&#160;&#160;&#160;[[Show Settings]].\n^^(Private settings are stored in this ~TiddlyWiki, shared settings are stored as cookies. For more information see the [[Settings documentation|SettingsPlugin Documentation]].)^^\n<<option chkUseYourSearch>> Use 'Your Search' //([[more options|YourSearch Options]])//
<<list all>>
|[[Table of Contents]] |h\n|[[Executive Summary]] |\n|[[Preface]] |\n|[[Introduction]] |\n|[[Summary of Conclusions]] |\n|[[Part I]] |h\n|[[Chapter 1]] |\n|[[Chapter 2]] |\n|[[Part II]] |h\n|[[Chapter 3]] |\n|[[Chapter 4]] |\n|[[Chapter 5]] |\n|[[Chapter 6]] |\n|[[Part III]] |h\n|[[Chapter 7]] |\n|[[Chapter 8]] |\n|[[Chapter 9]] |\n|[[Chapter 10]] |\n|[[Chapter 11]] |\n|[[Chapter 12]] |\n|[[Chapter 13]] |\n|[[Part IV]] |h\n|[[Chapter 14]] |\n|[[Chapter 15]] |\n|[[Chapter 16]] |\n|[[Chapter 17]] |\n|[[Part V]] |h\n|[[Chapter 18]] |\n|[[Chapter 19]] |\n|[[Chapter 20]] |\n|[[Part VI]] |h\n|[[Chapter 21]] |\n|[[Chapter 22]] |\n|[[Chapter 23]] |\n|[[Chapter 24]] |\n|[[Chapter 25]] |\n|[[Chapter 26]] |\n|[[Chapter 27]] |\n|[[Acronyms]] |\n|[[Postscript]] |\n<<redirect "Executive Summary" "Executive Summary">>\n<<redirect "Preface" "Preface">>\n<<redirect "Acknowledgements" "Acknowledgements">>\n<<redirect "Introduction" "Introduction">>\n<<redirect "Summary of Conclusions" "Summary of Conclusions">>\n<<redirect "Part I" "Part I">>\n<<redirect "Chapter 1" "Chapter 1">>\n<<redirect "Chapter 2" "Chapter 2">>\n<<redirect "Chapter 2: Annex A" "Chapter 2: Annex A">>\n<<redirect "Part II" "Part II">>\n<<redirect "Chapter 3" "Chapter 3">>\n<<redirect "Chapter 4" "Chapter 4">>\n<<redirect "Chapter 5" "Chapter 5">>\n<<redirect "Chapter 6" "Chapter 6">>\n<<redirect "Part III" "Part III">>\n<<redirect "Chapter 7" "Chapter 7">>\n<<redirect "Chapter 7: Annex A" "Chapter 7: Annex A">>\n<<redirect "Chapter 7: Annex B" "Chapter 7: Annex B">>\n<<redirect "Chapter 7: Annex C" "Chapter 7: Annex C">>\n<<redirect "Chapter 7: Annex D" "Chapter 7: Annex D">>\n<<redirect "Chapter 8" "Chapter 8">>\n<<redirect "Chapter 9" "Chapter 9">>\n<<redirect "Chapter 10" "Chapter 10">>\n<<redirect "Chapter 11" "Chapter 11">>\n<<redirect "Chapter 12" "Chapter 12">>\n<<redirect "Chapter 13" "Chapter 13">>\n<<redirect "Part IV" "Part IV">>\n<<redirect "Chapter 14" "Chapter 14">>\n<<redirect "Chapter 15" "Chapter 15">>\n<<redirect "Chapter 16" "Chapter 16">>\n<<redirect "Chapter 17" "Chapter 17">>\n<<redirect "Part V" "Part V">>\n<<redirect "Chapter 18" "Chapter 18">>\n<<redirect "Chapter 19" "Chapter 19">>\n<<redirect "Chapter 20" "Chapter 20">>\n<<redirect "Part VI" "Part VI">>\n<<redirect "Chapter 21" "Chapter 21">>\n<<redirect "Chapter 22" "Chapter 22">>\n<<redirect "Chapter 23" "Chapter 23">>\n<<redirect "Chapter 24" "Chapter 24">>\n<<redirect "Chapter 25" "Chapter 25">>\n<<redirect "Chapter 26" "Chapter 26">>\n<<redirect "Chapter 27" "Chapter 27">>\n<<redirect "Acryonyms & Abbreviations" "Acryonyms & Abbreviations">>\n<<redirect "Postscript" "Postscript">>\n<<redirect "Postscript Technical Annex" "Postscript Technical Annex">>
The //Avoiding Dangerous Climate Change// book, commissioned by ''Defra'' - the British Department of Environment, Food and Rural Affairs - consolidates the scientific findings of a major conference held in Exeter, and gives an account of the most recent developments on critical thresholds and key vulnerabilities of the climate system, impacts on human and natural systems, emission pathways and technological options of meeting different stabilisation levels of greenhouse gases in the atmosphere.\n!!!The book focuses on three crucial questions:\n# ''For different levels of climate change what are the key impacts, for different regions and sectors, and for the world as a whole?''\n# ''What would such levels of climate change imply in terms of greenhouse gas stabilisation concentrations and emission pathways required to achieve such levels?''\n#'' What technological options are there for achieving stabilisation of greenhouse gases at different stabilisation concentrations in the atmosphere, taking into account costs and uncertainties?''\n!!! Read more:\n* [[Avoiding Dangerous Climate Change - executive summary|http://www.defra.gov.uk/environment/climatechange/research/dangerous-cc/pdf/avoid-dangercc-execsumm.pdf]], pdf (168 KB)\n* [[Avoiding Dangerous Climate Change - full text of book|http://www.defra.gov.uk/environment/climatechange/research/dangerous-cc/pdf/avoid-dangercc.pdf]], pdf (16.3 MB - note very large file size)\n* [[News release|http://www.defra.gov.uk/news/2006/060130c.htm]] - 30 January 2006\n* The book can be ordered online via the [[Cambridge University Press website|http://www.cambridge.org/0521864712]].\n\n* More on [[Climate Change @ Defra|http://www.defra.gov.uk/environment/climatechange]]
<<tabs txtMainTab Timeline Timeline TabTimeline Alphabetical 'All tiddlers' TabAll Tags 'All tags' TabTags Missing 'Missing tiddlers' TabMoreMissing Orphans 'Orphaned tiddlers' TabMoreOrphans Shadowed 'Shadowed tiddlers' TabMoreShadowed>>
/***\n|Name|Better Timeline plugin macro|h\n|Created by|[[Saq Imtiaz]]|\n|Location|http://lewcid.googlepages.com/lewcid.html#BetterTimelineMacro|\n|Version|0.5 beta|\n|Requires|~TW2.x|\n!!!Description:\nA replacement for the core timeline macro that offers more features:\n*list tiddlers with only specfic tag\n*exclude tiddlers with a particular tag\n*limit entries to any number of days, for example one week\n*specify a start date for the timeline, only tiddlers after that date will be listed.\n\n!!!Installation:\nCopy the contents of this tiddler to your TW, tag with systemConfig, save and reload your TW.\n\n!!!Syntax:\n{{{<<timeline better:true>>}}}\n''the param better:true enables the advanced features, without it you will get the old timeline behaviour.''\n\nadditonal params:\n(use only the ones you want)\n{{{<<timeline better:true onlyTag:Tag1 excludeTag:Tag2 sortBy:modified/created firstDay:YYYYMMDD maxDays:7 maxEntries:30>>}}}\n\n''explanation of syntax:''\nonlyTag: only tiddlers with this tag will be listed. Default is to list all tiddlers.\nexcludeTag: tiddlers with this tag will not be listed.\nsortBy: sort tiddlers by date modified or date created. Possible values are modified or created.\nfirstDay: useful for starting timeline from a specific date. Example: 20060701 for 1st of July, 2006\nmaxDays: limits timeline to include only tiddlers from the specified number of days. If you use a value of 7 for example, only tiddlers from the last 7 days will be listed.\nmaxEntries: limit the total number of entries in the timeline.\n\n\n!!!History:\n*28-07-06: ver 0.5 beta, first release\n\n!!!Code\n***/\n//{{{\n// Return the tiddlers as a sorted array\nTiddlyWiki.prototype.getTiddlers = function(field,excludeTag,includeTag)\n{\n var results = [];\n this.forEachTiddler(function(title,tiddler)\n {\n if(excludeTag == undefined || tiddler.tags.find(excludeTag) == null)\n if(includeTag == undefined || tiddler.tags.find(includeTag)!=null)\n results.push(tiddler);\n });\n if(field)\n results.sort(function (a,b) {if(a[field] == b[field]) return(0); else return (a[field] < b[field]) ? -1 : +1; });\n return results;\n}\n\n\n\n//this function by Udo\nfunction getParam(params, name, defaultValue)\n{\n if (!params)\n return defaultValue;\n var p = params[0][name];\n return p ? p[0] : defaultValue;\n}\n\nwindow.old_timeline_handler= config.macros.timeline.handler;\nconfig.macros.timeline.handler = function(place,macroName,params,wikifier,paramString,tiddler)\n{\n var args = paramString.parseParams("list",null,true);\n var betterMode = getParam(args, "better", "false");\n if (betterMode == 'true')\n {\n var sortBy = getParam(args,"sortBy","modified");\n var excludeTag = getParam(args,"excludeTag",undefined);\n var includeTag = getParam(args,"onlyTag",undefined);\n var tiddlers = store.getTiddlers(sortBy,excludeTag,includeTag);\n var firstDayParam = getParam(args,"firstDay",undefined);\n var firstDay = (firstDayParam!=undefined)? firstDayParam: "00010101";\n var lastDay = "";\n var field= sortBy;\n var maxDaysParam = getParam(args,"maxDays",undefined);\n var maxDays = (maxDaysParam!=undefined)? maxDaysParam*24*60*60*1000: (new Date()).getTime() ;\n var maxEntries = getParam(args,"maxEntries",undefined);\n var last = (maxEntries!=undefined) ? tiddlers.length-Math.min(tiddlers.length,parseInt(maxEntries)) : 0;\n for(var t=tiddlers.length-1; t>=last; t--)\n {\n var tiddler = tiddlers[t];\n var theDay = tiddler[field].convertToLocalYYYYMMDDHHMM().substr(0,8);\n if ((theDay>=firstDay)&& (tiddler[field].getTime()> (new Date()).getTime() - maxDays))\n {\n if(theDay != lastDay)\n {\n var theDateList = document.createElement("ul");\n place.appendChild(theDateList);\n createTiddlyElement(theDateList,"li",null,"listTitle",tiddler[field].formatString(this.dateFormat));\n lastDay = theDay;\n }\n var theDateListItem = createTiddlyElement(theDateList,"li",null,"listLink",null);\n theDateListItem.appendChild(createTiddlyLink(place,tiddler.title,true));\n }\n }\n }\n\n else\n {\n window.old_timeline_handler.apply(this,arguments);\n }\n}\n//}}}
/***\n|Name|BigThemePack|\n|Created by|SimonBaird & SaqImtiaz|\n|Location|http://simonbaird.com/mptw/#BigThemePack|\n|Version|0.1.1|\n|Requires|SelectThemePlugin|\n!Uninstallation Notes:\n*Make sure that you set your theme as default or none, before deleting the theme pack.\n\n!Usage:\n<<themeSelect style 'Select Theme'>>\n\n***/\n//{{{\nif (!config.themes) config.themes = [];\n//}}}\n/***\n!!~MonkyMind themes\nThe following themes were created by Robert Lindsay from http://www.monkymind.org/\n***/\n//{{{\n\nconfig.shadowTiddlers.Berry2StyleSheet = "<!--- [[Berry 2|StyleSheet]] with ideas shamesslessly taken from (and suggested by) Simon Baird, Clint Checketts and Christine Hodges --->\sn\sn/*{{{*/\sn.headerForeground { display: none;}\sn#sidebar {width: 170px; background: #efefef;border-left: solid 2px #b8b9c7;border-top: solid 2px #d7d8e8;}\sn#sidebarTabs .tabContents {width: 158px; background: #eae9ee;font-weight: bold; color: #333 ;}\sn#sidebarOptions input { border: solid 2px #b8b9c7; }\sn#sidebarOptions .sliderPanel { background: #eee;}\sn#sidebarOptions a {;border: none;}\sn#sidebarOptions .sliderPanel a {border: none;color: #5c4894;}\sn#displayArea {background: #fff;margin: 1em 15.7em 0em 1em;border-left: solid 2px #b8b9c7;}\sn.viewer {line-height: 1.4em;padding-bottom: 1em;border-bottom:solid 1px #b8b9c7;}\sn.viewer th, thead td {background: #5d4b97;border: 1px solid #666;color: #fff;}\sn.title {color: #000}\snh1,h2,h3,h4,h5 {color: #fff;background: #6b69ad;}\sna{ color: #700126;}\sna:hover{ background: #6b69ad; color: #fff;font-weight: bold;}\sn.externalLink { text-decoration: underline; color: #000083;}\snbody { background: #d7d8e8;}\sn.popup { background: #6b69ad; border: 1px solid #04b;}\sn.popup li a:hover {background: #d7d8e8;color: #000;border: none;}\sn.popup li.disabled {color: #000;}\sn.button:hover {color: #fff;background: #6b69ad;\sn border: 1px solid #d7d8e8;}\sn#topMenu { background: transparent; padding: 6px;margin-left: -5px;border-bottom: solid 3px #5c4894;}\sn#topMenu .button, #topMenu .tiddlyLink, tiddlyLinkExisting, #topMenu .externalLink\sn{\sn color: #fff;\sn text-align: center;\sn font-weight: bold;\sn font-size: 1.1em;\sn text-decoration: none;\sn letter-spacing: 1.5px;\sn background: transparent;\sn border-right: solid 1px #fff;\sn padding: 5px 15px 8px 15px;\sn}\sn#topMenu a:hover {\sn color: #700126;\sn background: #d7d8e8;\sn}\sn#topMenu br {display: none; padding-right: 1em;}\sn\sn\sn/*}}}*/";\n\nconfig.shadowTiddlers.Berry2PageTemplate = "<!--- More ideas shamesslessly begged, borrowed or stolen from..... Simon Baird, Clint Checketts and Christine Hodges :)) --->\sn<!--{{{-->\sn<div class='header' macro=\s"gradient vert #5c4894 #6b69ad\s">\sn <div id='topMenu'>\sn <span refresh='content' tiddler='SiteTitle'></span><span refresh='content' tiddler='MainMenu'></span></div>\sn </div>\sn</div> \sn<div id='sidebar'>\sn <div id='sidebarOptions' refresh='content' tiddler='SideBarOptions'></div>\sn <div id='sidebarTabs' refresh='content' force='true' tiddler='SideBarTabs'></div>\sn</div>\sn<div id='displayArea'>\sn <div id='messageArea'></div>\sn <div id='tiddlerDisplay'></div>\sn</div>\sn<!--}}}-->\sn";\n\nconfig.themes.push("Berry2");\n\n\nconfig.shadowTiddlers.Blueberry2StyleSheet = "<!--- [[Blueberry 2|StyleSheet]] with ideas shamesslessly taken from (and suggested by) Simon Baird, Clint Checketts and Christine Hodges --->\sn\sn/*{{{*/\sn.headerForeground { display: none;}\sn#sidebar {width: 171px; background: #e7ecee;border-left: solid 2px #8895bb;border-top: solid 2px #97a8d2;}\sn#sidebarTabs .tabContents {width: 158px; background: #dce1e3;font-weight: bold; color: #333 ;}\sn#sidebarOptions input { border: solid 2px #8895bb; }\sn#sidebarOptions .sliderPanel { background: #eee;}\sn#sidebarOptions a {;border: none;}\sn#sidebarOptions .sliderPanel a {border: none;color: #00005a;}\sn#displayArea {background: #fff;margin: 1em 15.7em 0em 1em;border-left: solid 2px #8895bb;}\sn.viewer {line-height: 1.4em;padding-bottom: 1em;border-bottom:solid 1px #dedede;}\sn.viewer th, thead td {background: #00009d;border: 1px solid #666;color: #fff;}\sn.title {color: #000}\snh1,h2,h3,h4,h5 {color: #fff;background: #00009d;}\sna{ color: #00005a;}\sna:hover{ background: #00009d; color: #fff;font-weight: bold;}\sn.externalLink { text-decoration: underline; color: #000083;}\snbody { background: #97a8d2;}\sn.popup { background: #04b; border: 1px solid #04b;}\sn.popup li a:hover {background: #dedede;color: #000083;border: none;}\sn.popup li.disabled {color: #000;}\sn.button:hover {color: #fff;background: #00009d;\sn border: 1px solid #dedede;}\sn#topMenu { background: transparent; padding: 6px;margin-left: -5px;border-bottom: solid 3px #00005a}\sn#topMenu .button, #topMenu .tiddlyLink, tiddlyLinkExisting, #topMenu .externalLink\sn{\sn color: #fff;\sn text-align: center;\sn font-weight: bold;\sn font-size: 1.1em;\sn text-decoration: none;\sn letter-spacing: 1.5px;\sn background: transparent;\sn border-right: solid 1px #fff;\sn padding: 5px 15px 6px 15px;\sn}\sn#topMenu a:hover {\sn color: #fff;\sn background: #00009d;\sn border: solid 1px #db4;\sn}\sn#topMenu br {display: none; padding-right: 1em;}\sn\sn\sn/*}}}*/";\n\nconfig.shadowTiddlers.Blueberry2PageTemplate = "<!--- More ideas shamesslessly begged, borrowed or stolen from..... Simon Baird, Clint Checketts and Christine Hodges :)) --->\sn<!--{{{-->\sn<div class='header' macro=\s"gradient vert #00005a #0000ad\s">\sn <div id='topMenu'>\sn <span refresh='content' tiddler='SiteTitle'></span><span refresh='content' tiddler='MainMenu'></span></div>\sn </div>\sn</div> \sn<div id='sidebar'>\sn <div id='sidebarOptions' refresh='content' tiddler='SideBarOptions'></div>\sn <div id='sidebarTabs' refresh='content' force='true' tiddler='SideBarTabs'></div>\sn</div>\sn<div id='displayArea'>\sn <div id='messageArea'></div>\sn <div id='tiddlerDisplay'></div>\sn</div>\sn<!--}}}-->\sn";\n\nconfig.themes.push("Blueberry2");\n\n\nconfig.shadowTiddlers.iJobsStyleSheet = "<!--- [[iJobs 2|StyleSheet]] with ideas shamesslessly taken from (and suggested by) Simon Baird, Clint Checketts and Christine Hodges. Colours inspired by http://www.solucija.com/templates/demo/Internet_Jobs/ --->\sn/*{{{*/\sn.headerForeground { display: none;}\sn#sidebar {width: 171px; background: #808080;border-bottom: solid 1.5em #3c6491;border-top: solid 2px #fff;}\sn#sidebarTabs .tabContents {width: 158px; background: #eee;font-weight: bold; color: #333 ;}\sn.tabSelected{color: #fff;background: #963112; border: solid 1px #fff;}\sn.tabUnselected {color: #fff;background: #999;}\sn#sidebarOptions .sliderPanel { background: #eee;}\sn#sidebarOptions a {;border: none;}\sn#sidebarOptions .sliderPanel a {border: none;color: #333;background: #eee;}\sn#displayArea {background: #fff;margin: 1em 15.7em 0em 1em;border-top: solid 3px #ddd;border-bottom: solid 1.5em #3c6491;}\sn.viewer {line-height: 1.4em;padding-bottom: 1em;border-bottom:solid 1px #dedede;}\sn.viewer th, thead td {background: #963112;border: 1px solid #666;color: #fff;}\sn.title {color: #000}\snh1,h2,h3,h4,h5 {color: #fff;background: #963112;}\sna{ color:#c01903 ;}\sna:hover{ background: #c01903; color: #fff;font-weight: bold;}\sn.externalLink { text-decoration: underline; color: #c01903;}\snbody { background: #fff;}\sn.popup { background: #3c6491; border: 1px solid #3c6491;}\sn.popup li a:hover {background: #dedede;color: #963112;border: none;}\sn.popup li.disabled {color: #000;}\sn.button {color: #fff;background: #808080;border: 1px solid #fff;}\sn.button:hover {color: #fff;background: #c01903;\sn border: 1px solid #dedede;}\sn#topMenu { background: transparent;border-bottom: solid 3px #bcbcbc; padding: 5px;margin-left: -5px;}\sn#topMenu .button, #topMenu .tiddlyLink, tiddlyLinkExisting, #topMenu .externalLink\sn{\sn color: #333;\sn text-align: center;\sn font-weight: bold;\sn font-size: 1em;\sn text-decoration: none;\sn letter-spacing: 1.5px;\sn background: transparent;\sn border-right: solid 1px #fff;\sn padding: 5px 15px 8px 15px;\sn}\sn#topMenu a:hover {\sn color: #fff;\sn background: #3c6491;\sn}\sn#topMenu br {display: none; padding-right: 1em;}\sn\sn\sn/*}}}*/\sn";\n\nconfig.shadowTiddlers.iJobsPageTemplate = "<!--- More ideas shamesslessly begged, borrowed or stolen from..... Simon Baird, Clint Checketts and Christine Hodges :)) --->\sn<!--{{{-->\sn<div class='header' macro=\s"gradient vert #aaa #ccc\s">\sn <div id='topMenu'>\sn <span refresh='content' tiddler='SiteTitle'></span><span refresh='content' tiddler='MainMenu'></span></div>\sn </div>\sn</div> \sn<div id='sidebar'>\sn <div id='sidebarOptions' refresh='content' tiddler='SideBarOptions'></div>\sn <div id='sidebarTabs' refresh='content' force='true' tiddler='SideBarTabs'></div>\sn</div>\sn<div id='displayArea'>\sn <div id='messageArea'></div>\sn<div class='viewer' macro=\s"gradient vert #f5f5f5 #fff\s">\sn <div id='tiddlerDisplay'></div>\sn</div>\sn<!--}}}-->\sn";\n\nconfig.themes.push("iJobs");\n\n\nconfig.shadowTiddlers.NoBerry2StyleSheet = "<!--- The default TW colours with modified layout. Ideas shamesslessly taken from (and suggested by) Simon Baird, Clint Checketts and Christine Hodges --->\sn\sn/*{{{*/\sn.headerForeground { display: none;}\sn#sidebar {width: 170px; }\sn#sidebarTabs .tabContents {width: 158px; }\sn#displayArea {background: #fff;margin: 1em 15.7em 0em 1em;}\sn#topMenu { background: transparent; padding: 6px;margin-left: -5px; border-bottom: solid 3px #0457ce;}\sn#topMenu .button, #topMenu .tiddlyLink, tiddlyLinkExisting, #topMenu .externalLink\sn{\sn color: #fff;\sn text-align: center;\sn font-weight: bold;\sn font-size: 1.1em;\sn text-decoration: none;\sn letter-spacing: 1.5px;\sn background: transparent;\sn border-right: solid 1px #fff;\sn padding: 5px 15px 8px 15px;\sn}\sn#topMenu a:hover {\sn color: #fff;\sn background: #18f;\sn}\sn#topMenu br {display: none; padding-right: 1em;}\sn\sn\sn/*}}}*/";\n\nconfig.shadowTiddlers.NoBerry2PageTemplate = "<!--- More ideas shamesslessly begged, borrowed or stolen from..... Simon Baird, Clint Checketts and Christine Hodges :)) --->\sn<!--{{{-->\sn<div class='header' macro=\s"gradient vert #04b #18f\s">\sn <div id='topMenu'>\sn <span refresh='content' tiddler='SiteTitle'></span><span refresh='content' tiddler='MainMenu'></span></div>\sn </div>\sn</div> \sn<div id='sidebar'>\sn <div id='sidebarOptions' refresh='content' tiddler='SideBarOptions'></div>\sn <div id='sidebarTabs' refresh='content' force='true' tiddler='SideBarTabs'></div>\sn</div>\sn<div id='displayArea'>\sn <div id='messageArea'></div>\sn <div id='tiddlerDisplay'></div>\sn</div>\sn<!--}}}-->\sn";\n\nconfig.themes.push("NoBerry2");\n\n//}}}\n/***\n!!Clint's Themes\nThe themes were created by Clint Checketts from http://www.checkettsweb.com/\nThe original GTD theme was created by Nathan Bowers from http://snapgrid.com/\n***/\n//{{{\n\n\nconfig.shadowTiddlers.GTDStyleSheet = "/***\sn!Calendar CSS\sn***/\sn/*{{{*/\sn.calendar{\sn border-bottom: 1px solid #550000;\sn}\sn\sn.viewer .calendar{\sn width: 220px;\sn}\sn\sn#mainMenu .calendar{\sn font-size: 8px;\sn cursor: pointer;\sn width: 100%;\sn border: 0;\sn border-collapse: collapse;\sn}\sn\sn#mainMenu .calendar .button{\sn border: 0;\sn}\sn\sn#mainMenu .calendar td{\sn font-size: 8pt;\sn padding: 0;\sn background: #fff;\sn border: 0;\sn}\sn\sn#mainMenu .calendar a{\sn margin: 0;\sn color: #000;\sn background: transparent;\sn}\sn\sn#mainMenu .calendar a:hover{\sn color: #000;\sn background: transparent;\sn}\sn\sn#mainMenu .calendarMonthname,\sn#mainMenu .calendar .calendarMonthTitle td a{\sn color: #fff;\sn}\sn\sn#mainMenu .calendarDaysOfWeek td{\sn background: #500;\sn color: #fff;\sn}\sn\sn/*}}}*/\sn\sn/***\sn!GTD Style\sn\sn!Generic rules /%==================================================================== %/\sn***/\sn/*{{{*/\snbody {\sn background: #464646 url('http://shared.snapgrid.com/images/tiddlywiki/bodygradient.png') repeat-x top fixed;\sn color: #000;\sn font: .82em/1.25em 'Bitstream Vera Sans', Verdana, Helvetica, Arial, sans-serif;\sn/*'Lucida Sans Unicode', 'Lucida Grande','Trebuchet MS', */\sn}\sn/*}}}*/\sn/***\sn!Header rules /%====================================================================== %/\sn***/\sn/*{{{*/\sn#contentWrapper\sn{\sn margin: 0 auto;\snwidth: 59em;\snposition: relative;\sn}\sn\sn#header\sn{\sn color: #fff;\sn padding: 1.5em 1em .6em 0;\sn}\sn\sn#siteTitle {\sn\sn font-size: 2.3em;\sn margin: 0;\sn}\sn\sn#siteSubtitle {\sn font-size: 1em;\sn padding-left: .8em;;\sn}\sn\sn#titleLine{\sn background: transparent;\sn padding: 0;\sn}\sn\sn#titleLine a {\sn color: #cf6;\sn background: transparent;\sn}\sn/*}}}*/\sn\sn\sn\sn\sn\sn\sn\sn\sn\sn/***\sn!Sidebar rules /%====================================================================== %/\sn***/\sn/*{{{*/\sn#sidebar{\sn left: 0;\snwidth: 18em;\sn margin: .9em .9em 0 0;\sn color: #000;\sn background: transparent;\sn}\sn/*}}}*/\sn/***\sn!Main menu rules /%=================================================================== %/\sn***/\sn/*{{{*/\sn#mainMenu{\sn position: static;\sn width: auto;\sn\sn background: #600;\sn border-right: 3px solid #500;\snpadding: 0;\sn text-align: left;\sn font-size: 1em;\sn}\sn\sn#mainMenu h1{\sn padding: 0;\sn margin: 0;\sn font-size: 1em;\sn font-weight: normal;\sn}\sn\sn#mainMenu ul{\sn padding: 0;\sn margin: 0;\sn list-style: none;\sn}\sn\sn#mainMenu h1 a,\sn#mainMenu li a,\sn#mainMenu li a.button{\sn display: block;\sn padding: 0 5px 0 10px;\snborder: 0;\sn border-bottom: 1px solid #500;\sn border-top: 1px solid #900;\snmargin: 0;\sn}\sn\sn#mainMenu a,\sn#mainMenu a.button{\sn height: 22px;\snheight: 1.83em;\sn line-height: 22px;\sn color: #fff;\sn background: #700;\snmargin-left: 1em;\sn}\sn\sn#mainMenu a:hover,\sn#mainMenu a.button:hover {\sn background: #b00;\sn color: #fff;\sn}\sn/*}}}*/\sn/***\sn!Sidebar options rules /%============================================================ %/\sn***/\sn/*{{{*/\sn#sidebarOptions {\sn background: #eeb;\sn border-right: 3px solid #bb8;\sn color: #B4C675;\sn padding: .5em 0;\sn}\sn\sn#sidebarOptions a {\sn color: #700;\sn margin: .2em .8em;\sn padding: 0;\sn border: 0;\sn}\sn\sn#sidebarOptions a:hover, #sidebarOptions a:active {\sn color: #fff;\sn background: #700;\sn border: 0;\sn}\sn\sn#sidebarOptions input{\sn margin: 2px 10px;\sn border: 1px inset #333;\snpadding: 0;\sn}\sn\sn#sidebarOptions .sliderPanel {\sn background: #fff;\sn color: #000;\sn padding: 5px 10px;\sn font-size: .9em;\sn}\sn\sn#sidebarOptions .sliderPanel a{\sn font-weight: normal;\sn margin: 0;\sn}\sn\sn#sidebarOptions .sliderPanel a:link,#sidebarOptions .sliderPanel a:visited {\sn color: #700;\sn}\sn\sn#sidebarOptions .sliderPanel a:hover,#sidebarOptions .sliderPanel a:active {\sn color: #fff;\sn background: #700;\sn}\sn/*}}}*/\sn/***\sn!Sidebar tabs rules /%===================================================================== %/\sn***/\sn/*{{{*/\sn#sidebarTabs {\sn background: transparent;\sn border-right: 3px solid #740;\sn border-bottom: 3px solid #520;\sn border: 0;\sn padding: 0;\sn}\sn\sn#contentWrapper #sidebarTabs a,\sn#contentWrapper #displayArea .tabContents a{\sn color: #fff;\sn}\sn\sn#contentWrapper #sidebarTabs a:hover,\sn#contentWrapper #displayArea .tabContents a:hover {\sn background: #000;\sn color: #fff;\sn}\sn\sn#contentWrapper #sidebarTabs a:active,\sn#contentWrapper #displayArea .tabContents a:active{\sn color: #000;\sn}\sn\sn\sn\sn#contentWrapper .tabSelected {\sn background: #960;\sn}\sn\sn#contentWrapper .tabUnselected{\sn background: #660;\sn}\sn\sn#contentWrapper #sidebar .tabset{\sn background: #eeb;\sn border-right: 3px solid #bb8;\sn padding: 0 0 0 .75em;\sn}\sn\sn#contentWrapper .tabContents{\snfont-size: .95em;\snbackground: #960;\snborder:0;\sn border-right: 3px solid #740;\sn border-bottom: 3px solid #520;\sn padding: .75em;\sn}\sn\sn#contentWrapper .tabContents{\sn width: auto;\sn}\sn\sn#contentWrapper #sidebarTabs .tabContents .tabset,\sn#contentWrapper .tabContents .tabset{\sn border: 0;\sn padding: 0;\sn background: transparent;\sn}\sn\sn#contentWrapper .tabContents .tabSelected,\sn#contentWrapper .tabContents .tabContents {\sn background: #700;\sn border: 0;\sn}\sn\sn#contentWrapper .tabContents .tabUnselected {\sn background: #440;\sn}\sn\sn#contentWrapper .tabset a {\sn color: #fff;\sn padding: .2em .7em;\sn margin: 0 .17em 0 0;\sn height: 2em;\snposition: static;\sn}\sn\sn#contentWrapper .tabset a:hover {\sn background: #000;\sn color: #fff;\sn}\sn\sn#contentWrapper .tabset a:active {\sn color: #000;\sn}\sn\sn#contentWrapper .tabContents ul{\sn margin: 0;\sn padding: 0;\sn list-style: none;\sn}\sn\sn#contentWrapper .tabContents .tabContents ul{\sn color: #eeb;\sn}\sn\sn.tabContents ul a,\sn.tabContents ul .button{\sn color: #fff;\sn display: block;\sn padding: .1em 0 .1em .7em;\sn background: transparent;\sn border: 0;\sn}\sn\sn.tabContents ul a:hover {\sn color: #fff;\sn background: #000;\sn}\sn/*}}}*/\sn/***\sn!License panel rules /%==================================================================== %/\sn***/\sn/*{{{*/\sn#licensePanel {\sn padding: 0px 1em;\sn font-size: .9em;\sn}\sn\sn#licensePanel a {\sn color: #960;\sn display: block;\sn margin-top: .9em;\sn}\sn\sn#licensePanel a:hover {\sn color: #fff;\sn background: transparent;\sn}\sn/*}}}*/\sn/***\sn!Popup rules /%================================================================= %/\sn***/\sn/*{{{*/\sn.popup {\sn font-size: .8em;\sn padding: 0em;\sn background: #333;\sn border: 1px solid #000;\sn}\sn\sn.popup hr {\sn margin: 1px 0 0 0;\sn visibility: hidden;\sn}\sn\sn.popup li.disabled {\sn color: #666;\sn}\sn\sn.popup li a,\sn.popup li a:visited{\sn color: #000;\sn border: .1em outset #cf6;\sn background: #cf6;\sn}\sn\sn.popup li a:hover {\snborder: .1em outset #cf6;\sn background: #ef9;\sn color: #000;\sn}\sn/*}}}*/\sn/***\sn!Message area rules /%================================================================= %/\sn***/\sn/*{{{*/\sn#messageArea{\sn font-size: .9em;\sn padding: .4em;\sn background: #FFE72F;\sn border-right: .25em solid #da1;\sn border-bottom: .25em solid #a80;\sn\snposition: fixed;\sn top: 10px;\sn right: 10px;\sn color: #000;\sn}\sn\sn#contentWrapper #messageArea a{\sn color: #00e;\sn text-decoration: none;\sn}\sn\sn#contentWrapper #messageArea a:hover{\sn color: #00e;\sn text-decoration: underline;\sn background: transparent;\sn}\sn\sn#contentWrapper #messageArea .messageToolbar a.button{\sn border: 1px solid #da1;\sn}\sn\sn#contentWrapper #messageArea .messageToolbar a.button:hover{\sn color: #00e;\sn text-decoration: none;\sn border: 1px solid #000;\sn background: #fff;\sn}\sn\sn\sn\sn/*}}}*/\sn/***\sn!Tiddler display rules /%================================================================== %/\sn***/\sn/*{{{*/\sn#displayArea {\sn width: 39.75em;\sn margin: 0 0 0 17em;\sn}\sn\sn.tiddler {\sn margin: 0 0 .9em 0;\sn padding: 0 1em;\sn border-right: .25em solid #aaa;\sn border-bottom: .25em solid #555;\sn background: #fff;\sn}\sn\sn.title {\sn font-size: 1.5em;\sn font-weight: bold;\sn color: #900;\sn}\sn\sn.toolbar {\sn font-size: .8em;\sn padding: .5em 0;\sn}\sn\sn.toolbar .button{\sn padding: .1em .3em;\sn color: #000;\sn\sn border: .1em outset #cf6;\sn background: #cf6;\snmargin: .1em;\sn}\sn\sn.toolbar .button:hover {\sn background: #ef9;\sn color: #000;\sn}\sn\sn.toolbar .button:active {\sn background: #ff0;\sn}\sn\sn/*}}}*/\sn/***\sn!Viewer rules /% ------------------------------------------------------------------------------------------ %/\sn***/\sn/*{{{*/\sn.viewer {\sn line-height: 1.4em;\sn font-size: 1em;\sn}\sn\sn.viewer a:link, .viewer a:visited {\sn color: #15b;\sn}\sn\sn.viewer a:hover {\sn color: #fff;\sn background: #000;\sn}\sn\sn.viewer .button{\sn background: transparent;\sn border-top: 1px solid #eee;\sn border-left: 1px solid #eee;\sn border-bottom: 1px solid #000;\sn border-right: 1px solid #000;\sn}\sn\sn.viewer .button:hover{\sn background: #eee;\sn color: #000;\sn}\sn\sn.viewer .button:active{\sn background: #ccc;\sn border-bottom: 1px solid #eee;\sn border-right: 1px solid #eee;\sn border-top: 1px solid #111;\sn border-left: 1px solid #111;\sn}\sn\sn\sn.viewer blockquote {\sn border-left: 3px solid #777;\sn margin: .3em;\sn padding: .3em;\sn}\sn\sn.viewer pre{\sn background: #fefefe;\sn border: 1px solid #f1f1f1;\sn}\sn\sn.viewer pre, .viewer code{\sn color: #000;\sn}\sn\sn.viewer ul {\sn padding-left: 30px;\sn}\sn\sn.viewer ol {\sn padding-left: 30px;\sn}\snul{\snlist-style-type: asquare;\sn}\snol{ \sn list-style-type: decimal;\sn}\sn\snol ol{ \sn list-style-type: lower-alpha;\sn}\sn\snol ol ol{ \sn list-style-type: lower-roman;\sn}\sn\sn.viewer ul, .viewer ol, .viewer p {\sn margin: .0;\sn}\sn\sn.viewer li {\sn margin: .2em 0;\sn}\sn\snh1,h2,h3,h4,h5,h6 {\sn color: #000;\sn font-weight: bold;\sn background: #eee;\sn padding: 2px 10px;\sn margin: 5px 0;\sn}\sn\sn.viewer h1 {font-size: 1.3em;}\sn.viewer h2 {font-size: 1.2em;}\sn.viewer h3 {font-size: 1.1em;}\sn.viewer h4 {font-size: 1em;}\sn.viewer h5 { font-size: .9em;}\sn.viewer h6 { font-size: .8em;}\sn\sn.viewer table {\sn border: 2px solid #303030;\sn font-size: 11px;\sn margin: 10px 0;\sn}\sn\sn.viewer th, .viewer thead td{\sn color: #000;\sn background: #eee;\sn border: 1px solid #aaa;\sn padding: 0 3px;\sn}\sn\sn.viewer td {\sn border: 1px solid #aaa;\sn padding: 0 3px;\sn}\sn\sn.viewer caption {\sn padding: 3px;\sn}\sn\sn.viewer hr {\sn border: none;\sn border-top: dotted 1px #777;\sn height: 1px;\sn color: #777;\sn margin: 7px 0;\sn}\sn\sn.viewer\sn{\sn margin: .5em 0 0 0;\sn padding: .5em 0;\sn border-top: 1px solid #ccc;\sn}\sn\sn.highlight {\sn color: #000;\sn background: #ffe72f;\sn}\sn/*}}}*/\sn/***\sn!Editor rules /% ----------------------------------------------------------------------------------------- %/\sn***/\sn/*{{{*/\sn.editor {\sn font-size: .8em;\sn color: #402C74;\sn padding: .3em 0;\sn}\sn\sn.editor input, .editor textarea {\sn font: 1.1em/130% 'Andale Mono', 'Monaco', 'Lucida Console', 'Courier New', monospace;\sn margin: 0;\sn border: 1px inset #333;\sn padding: 2px 0;\sn}\sn\sn.editor textarea {\sn height: 42em;\sn width: 100%;\sn}\sn\sninput:focus, textarea:focus\sn{\sn background: #ffe;\sn border: 1px solid #000;\sn}\sn.footer\sn{\sn padding: .5em 0;\sn margin: .5em 0;\sn border-top: 1px solid #ddd;\sn color: #555;\sn text-align: center; \sn}\sn/*}}}*/\sn/***\sn!IE Display hacks /% ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~%/\sn***/\sn/*{{{*/\snbody{\sn _text-align: center;\sn}\sn\sn#contentWrapper\sn{\sn/* _width: 770px; CSS UNDERSCORE HACK FOR PROPER WIN/IE DISPLAY */\sn _text-align: left; /* CSS UNDERSCORE HACK FOR PROPER WIN/IE DISPLAY */ \sn}\sn\sn#messageArea{\sn _position: absolute;\sn}\sn/*}}}*/";\n\nconfig.shadowTiddlers.GTDPageTemplate = "<!---\sn| Name:|GTDTWPlusPageTemplate|\sn| Source:|http://www.checkettsweb.com/tw/gtd_tiddlywiki.htm#StyleSheet|\sn| Author:|ClintChecketts|\sn--->\sn<!--{{{-->\sn<div id='header'>\sn<div id='titleLine'>\sn<span id='siteTitle' refresh='content' tiddler='SiteTitle'></span>\sn<span id='siteSubtitle' refresh='content' tiddler='SiteSubtitle'></span>\sn</div>\sn</div>\sn<div id='sidebar'>\sn<div id='mainMenu' refresh='content' tiddler='MainMenu'></div>\sn<div id='sidebarOptions' refresh='content' tiddler='SideBarOptions'></div>\sn<div id='sidebarTabs' refresh='content' force='true' tiddler='SideBarTabs'></div><div id=\s"licensePanel\s">\sn<a rel=\s"license\s" href=\s"http://shared.snapgrid.com/gtd_tiddlywiki.html#RevisionHistory\s" target=\s"_new\s">GTDTW Version <span macro=\s"version\s"></span></a>\sn<a rel=\s"license\s" href=\s"http://www.tiddlywiki.com\s" target=\s"_new\s">\snTiddlyWiki is published by Jeremy Ruston at Osmosoft under a BSD open source license</a>\sn<a rel=\s"license\s" href=\s"http://snapgrid.com\s" target=\s"_new\s">GTD TiddlyWiki is a modification by Nathan Bowers at Snapgrid under the same license terms.</a>\sn<a rel=\s"license\s" href=\s"http://davidco.com\s" target=\s"_new\s">\s"Getting Things Done\s" is &#169; David Allen at Davidco. Davidco has no affiliation with TiddlyWiki or GTD TiddlyWiki.</a></div></div>\sn<div id='displayArea'>\sn<div id='messageArea'></div>\sn<div id='tiddlerDisplay'></div>\sn<!--}}}-->";\n\nconfig.themes.push("GTD");\n\n\nconfig.shadowTiddlers.DevFireStyleSheet = "/***\sn!Devfire\snStyle by Clint Checketts (http://www.checkettsweb.com) for TiddlyWiki 2.0\snInspired by the GLP'd Darkfire Wordpress skin.\sn\sn!Sections in this Tiddler:\sn*Generic rules\sn*Links styles\sn*Header\sn*Main menu\sn*Sidebar\sn**Sidebar options\sn**Sidebar tabs\sn*Message area\sn*Popup\sn*Tabs\sn*Tiddler display\sn**Viewer\sn**Editor\sn*Misc. rules\sn!Generic rules /% ============================================================= %/\sn***/\sn/*{{{*/\snbody {\snbackground-color: #000;\sn}\sn/*}}}*/\sn/***\sn!Link styles /% ============================================================= %/\sn***/\sn/*{{{*/\sna,\sna.button,\sn#mainMenu a.button,\sn#sidebarOptions .sliderPanel a{\sn color: #ffbf00;\sn border: 0;\sn}\sn\sna:hover,\sna.button:hover,\sn#mainMenu a.button:hover,\sn#sidebarOptions .sliderPanel a:hover\sn#sidebarOptions .sliderPanel a:active{\sn color: #ff7f00;\sn border: 0;\sn border-bottom: #ff7f00 1px dashed;\sn background: transparent;\sn text-decoration: none;\sn}\sn\sn#displayArea .button.highlight{\sn color: #ffbf00;\sn background: #4c4c4c;\sn}\sn/*}}}*/\sn/***\sn!Header styles /% ============================================================= %/\sn***/\sn/*{{{*/\sn.header{\sn border-bottom: 2px solid #ffbf00;\sn color: #fff;\sn}\sn\sn.headerForeground a {\sn color: #fff;\sn}\sn\sn.header a:hover {\sn border-bottom: 1px dashed #fff;\sn}\sn/*}}}*/\sn/***\sn!Main menu styles /% ============================================================= %/\sn***/\sn/*{{{*/\sn#mainMenu {color: #fff;}\sn#mainMenu h1{\sn font-size: 1.1em;\sn}\sn#mainMenu li,#mainMenu ul{\sn list-style: none;\sn margin: 0;\sn padding: 0;\sn}\sn/*}}}*/\sn/***\sn!Sidebar styles /% ============================================================= %/\sn***/\sn/*{{{*/\sn#sidebar {\sn right: 0;\sn color: #fff;\sn border: 2px solid #ffbf00;\sn border-width: 0 0 2px 2px;\sn}\sn#sidebarOptions {\sn background-color: #4c4c4c;\sn padding: 0;\sn}\sn\sn#sidebarOptions a{\sn margin: 0;\sn color: #ffbf00;\sn border: 0;\sn}\sn#sidebarOptions a:hover {\sn color: #4c4c4c;\sn background-color: #ffbf00;\sn\sn}\sn\sn#sidebarOptions a:active {\sn color: #ffbf00;\sn background-color: transparent;\sn}\sn\sn#sidebarOptions .sliderPanel {\sn background-color: #333;\sn margin: 0;\sn}\sn\sn#sidebarTabs {background-color: #4c4c4c;}\sn#sidebarTabs .tabSelected {\sn padding: 3px 3px;\sn cursor: default;\sn color: #ffbf00;\sn background-color: #666;\sn}\sn#sidebarTabs .tabUnselected {\sn color: #ffbf00;\sn background-color: #5f5f5f;\sn padding: 0 4px;\sn}\sn\sn#sidebarTabs .tabUnselected:hover,\sn#sidebarTabs .tabContents {\sn background-color: #666;\sn}\sn\sn.listTitle{color: #FFF;}\sn#sidebarTabs .tabContents a{\sn color: #ffbf00;\sn}\sn\sn#sidebarTabs .tabContents a:hover{\sn color: #ff7f00;\sn background: transparent;\sn}\sn\sn#sidebarTabs .txtMoreTab .tabSelected,\sn#sidebarTabs .txtMoreTab .tab:hover,\sn#sidebarTabs .txtMoreTab .tabContents{\sn color: #ffbf00;\sn background: #4c4c4c;\sn}\sn\sn#sidebarTabs .txtMoreTab .tabUnselected {\sn color: #ffbf00;\sn background: #5f5f5f;\sn}\sn\sn.tab.tabSelected, .tab.tabSelected:hover{color: #ffbf00; border: 0; background-color: #4c4c4c;cursor:default;}\sn.tab.tabUnselected {background-color: #666;}\sn.tab.tabUnselected:hover{color:#ffbf00; border: 0;background-color: #4c4c4c;}\sn.tabContents {\sn background-color: #4c4c4c;\sn border: 0;\sn}\sn.tabContents .tabContents{background: #666;}\sn.tabContents .tabSelected{background: #666;}\sn.tabContents .tabUnselected{background: #5f5f5f;}\sn.tabContents .tab:hover{background: #666;}\sn/*}}}*/\sn/***\sn!Message area styles /% ============================================================= %/\sn***/\sn/*{{{*/\sn#messageArea {background-color: #666; color: #fff; border: 2px solid #ffbf00;}\sn#messageArea a:link, #messageArea a:visited {color: #ffbf00; text-decoration:none;}\sn#messageArea a:hover {color: #ff7f00;}\sn#messageArea a:active {color: #ff7f00;}\sn#messageArea .messageToolbar a{\sn border: 1px solid #ffbf00;\sn background: #4c4c4c;\sn}\sn/*}}}*/\sn/***\sn!Popup styles /% ============================================================= %/\sn***/\sn/*{{{*/\sn#popup {color: #fff; background-color: #4c4c4c; border: 1px solid #ffbf00;}\sn#popup a {color: #ffbf00; }\sn#popup a:hover { background: transparent; color: #ff7f00; border: 0;}\sn#popup hr {color: #ffbf00; background: #ffbf00;}\sn/*}}}*/\sn/***\sn!Tiddler Display styles /% ============================================================= %/\sn***/\sn/*{{{*/\sn.title{color: #fff;}\snh1, h2, h3, h4, h5 {\sn color: #fff;\sn background-color: transparent;\sn border-bottom: 1px solid #333;\sn}\sn\sn.subtitle{\sn color: #666;\sn}\sn\sn.viewer {color: #fff; }\sn\sn.viewer table{background: #666; color: #fff;}\sn\sn.viewer th {background-color: #996; color: #fff;}\sn\sn.viewer pre, .viewer code {color: #ddd; background-color: #4c4c4c; border: 1px solid #ffbf00;}\sn\sn.viewer hr {color: #666;}\sn\sn.tiddler .button {color: #4c4c4c;}\sn.tiddler .button:hover { color: #ffbf00; background-color: #4c4c4c;}\sn.tiddler .button:active {color: #ffbf00; background-color: #4c4c4c;}\sn\sn.toolbar {\sn color: #4c4c4c;\sn}\sn\sn.toolbar a.button,\sn.editorFooter a{\sn border: 0;\sn}\sn\sn.footer {\sn color: #ddd;\sn}\sn\sn.selectedTiddler .footer {\sn color: #888;\sn}\sn\sn.highlight, .marked {\sn color: #000;\sn background-color: #ffe72f;\sn}\sn.editorFooter {\sn color: #aaa;\sn}\sn\sn.tab{\sn-moz-border-radius-topleft: 3px;\sn-moz-border-radius-topright: 3px;\sn}\sn\sn.tagging,\sn.tagged{\sn background: #4c4c4c;\sn border: 1px solid #4c4c4c; \sn}\sn\sn.selected .tagging,\sn.selected .tagged{\sn background: #000;\sn border: 1px solid #ffbf00;\sn}\sn\sn.tagging .listTitle,\sn.tagged .listTitle{\sn color: #fff;\sn}\sn\sn.tagging .button,\sn.tagged .button{\sn color: #ffbf00;\sn border: 0;\sn padding: 0;\sn}\sn\sn.tagging .button:hover,\sn.tagged .button:hover{\snbackground: transparent;\sn}\sn/*}}}*//***\sn!Devfire\snStyle by Clint Checketts (http://www.checkettsweb.com) for TiddlyWiki 2.0\snInspired by the GLP'd Darkfire Wordpress skin.\sn\sn!Sections in this Tiddler:\sn*Generic rules\sn*Links styles\sn*Header\sn*Main menu\sn*Sidebar\sn**Sidebar options\sn**Sidebar tabs\sn*Message area\sn*Popup\sn*Tabs\sn*Tiddler display\sn**Viewer\sn**Editor\sn*Misc. rules\sn!Generic rules /% ============================================================= %/\sn***/\sn/*{{{*/\snbody {\snbackground-color: #000;\sn}\sn/*}}}*/\sn/***\sn!Link styles /% ============================================================= %/\sn***/\sn/*{{{*/\sna,\sna.button,\sn#mainMenu a.button,\sn#sidebarOptions .sliderPanel a{\sn color: #ffbf00;\sn border: 0;\sn}\sn\sna:hover,\sna.button:hover,\sn#mainMenu a.button:hover,\sn#sidebarOptions .sliderPanel a:hover\sn#sidebarOptions .sliderPanel a:active{\sn color: #ff7f00;\sn border: 0;\sn border-bottom: #ff7f00 1px dashed;\sn background: transparent;\sn text-decoration: none;\sn}\sn\sn#displayArea .button.highlight{\sn color: #ffbf00;\sn background: #4c4c4c;\sn}\sn/*}}}*/\sn/***\sn!Header styles /% ============================================================= %/\sn***/\sn/*{{{*/\sn.header{\sn border-bottom: 2px solid #ffbf00;\sn color: #fff;\sn}\sn\sn.headerForeground a {\sn color: #fff;\sn}\sn\sn.header a:hover {\sn border-bottom: 1px dashed #fff;\sn}\sn/*}}}*/\sn/***\sn!Main menu styles /% ============================================================= %/\sn***/\sn/*{{{*/\sn#mainMenu {color: #fff;}\sn#mainMenu h1{\sn font-size: 1.1em;\sn}\sn#mainMenu li,#mainMenu ul{\sn list-style: none;\sn margin: 0;\sn padding: 0;\sn}\sn/*}}}*/\sn/***\sn!Sidebar styles /% ============================================================= %/\sn***/\sn/*{{{*/\sn#sidebar {\sn right: 0;\sn color: #fff;\sn border: 2px solid #ffbf00;\sn border-width: 0 0 2px 2px;\sn}\sn#sidebarOptions {\sn background-color: #4c4c4c;\sn padding: 0;\sn}\sn\sn#sidebarOptions a{\sn margin: 0;\sn color: #ffbf00;\sn border: 0;\sn}\sn#sidebarOptions a:hover {\sn color: #4c4c4c;\sn background-color: #ffbf00;\sn\sn}\sn\sn#sidebarOptions a:active {\sn color: #ffbf00;\sn background-color: transparent;\sn}\sn\sn#sidebarOptions .sliderPanel {\sn background-color: #333;\sn margin: 0;\sn}\sn\sn#sidebarTabs {background-color: #4c4c4c;}\sn#sidebarTabs .tabSelected {\sn padding: 3px 3px;\sn cursor: default;\sn color: #ffbf00;\sn background-color: #666;\sn}\sn#sidebarTabs .tabUnselected {\sn color: #ffbf00;\sn background-color: #5f5f5f;\sn padding: 0 4px;\sn}\sn\sn#sidebarTabs .tabUnselected:hover,\sn#sidebarTabs .tabContents {\sn background-color: #666;\sn}\sn\sn.listTitle{color: #FFF;}\sn#sidebarTabs .tabContents a{\sn color: #ffbf00;\sn}\sn\sn#sidebarTabs .tabContents a:hover{\sn color: #ff7f00;\sn background: transparent;\sn}\sn\sn#sidebarTabs .txtMoreTab .tabSelected,\sn#sidebarTabs .txtMoreTab .tab:hover,\sn#sidebarTabs .txtMoreTab .tabContents{\sn color: #ffbf00;\sn background: #4c4c4c;\sn}\sn\sn#sidebarTabs .txtMoreTab .tabUnselected {\sn color: #ffbf00;\sn background: #5f5f5f;\sn}\sn\sn.tab.tabSelected, .tab.tabSelected:hover{color: #ffbf00; border: 0; background-color: #4c4c4c;cursor:default;}\sn.tab.tabUnselected {background-color: #666;}\sn.tab.tabUnselected:hover{color:#ffbf00; border: 0;background-color: #4c4c4c;}\sn.tabContents {\sn background-color: #4c4c4c;\sn border: 0;\sn}\sn.tabContents .tabContents{background: #666;}\sn.tabContents .tabSelected{background: #666;}\sn.tabContents .tabUnselected{background: #5f5f5f;}\sn.tabContents .tab:hover{background: #666;}\sn/*}}}*/\sn/***\sn!Message area styles /% ============================================================= %/\sn***/\sn/*{{{*/\sn#messageArea {background-color: #666; color: #fff; border: 2px solid #ffbf00;}\sn#messageArea a:link, #messageArea a:visited {color: #ffbf00; text-decoration:none;}\sn#messageArea a:hover {color: #ff7f00;}\sn#messageArea a:active {color: #ff7f00;}\sn#messageArea .messageToolbar a{\sn border: 1px solid #ffbf00;\sn background: #4c4c4c;\sn}\sn/*}}}*/\sn/***\sn!Popup styles /% ============================================================= %/\sn***/\sn/*{{{*/\sn#popup {color: #fff; background-color: #4c4c4c; border: 1px solid #ffbf00;}\sn#popup li.disabled{color: #ffbf00;}\sn\sn#popup a {color: #ffbf00; }\sn#popup a:hover { background: transparent; color: #ff7f00; border: 0;}\sn#popup hr {color: #ffbf00; background: #ffbf00;}\sn/*}}}*/\sn/***\sn!Tiddler Display styles /% ============================================================= %/\sn***/\sn/*{{{*/\sn.title{color: #fff;}\snh1, h2, h3, h4, h5 {\sn color: #fff;\sn background-color: transparent;\sn border-bottom: 1px solid #333;\sn}\sn\sn.subtitle{\sn color: #666;\sn}\sn\sn.viewer {color: #fff; }\sn\sn.viewer table{background: #666; color: #fff;}\sn\sn.viewer th {background-color: #996; color: #fff;}\sn\sn.viewer pre, .viewer code {color: #ddd; background-color: #4c4c4c; border: 1px solid #ffbf00}\sn\sn.viewer hr {color: #666;}\sn\sn.tiddler .button {color: #4c4c4c;}\sn.tiddler .button:hover { color: #ffbf00; background-color: #4c4c4c;}\sn.tiddler .button:active {color: #ffbf00; background-color: #4c4c4c;}\sn\sn.toolbar {\sn color: #4c4c4c;\sn}\sn\sn.toolbar a.button,\sn.editorFooter a{\sn border: 0;\sn}\sn\sn.footer {\sn color: #ddd;\sn}\sn\sn.selectedTiddler .footer {\sn color: #888;\sn}\sn\sn.highlight, .marked {\sn color: #000;\sn background-color: #ffe72f;\sn}\sn.editorFooter {\sn color: #aaa;\sn}\sn\sn.tab{\sn-moz-border-radius-topleft: 3px;\sn-moz-border-radius-topright: 3px;\sn}\sn\sn.tagging,\sn.tagged{\sn background: #4c4c4c;\sn border: 1px solid #4c4c4c; \sn}\sn\sn.selected .tagging,\sn.selected .tagged{\sn background: #000;\sn border: 1px solid #ffbf00;\sn}\sn\sn.tagging .listTitle,\sn.tagged .listTitle{\sn color: #fff;\sn}\sn\sn.tagging .button,\sn.tagged .button{\sn color: #ffbf00;\sn border: 0;\sn padding: 0;\sn}\sn\sn.tagging .button:hover,\sn.tagged .button:hover{\snbackground: transparent;\sn}\sn\sn.cascade {\sn background: #4c4c4c;\sn color: #ddd;\sn border: 1px solid #ffbf00;\sn}\sn/*}}}*/";\n\nconfig.shadowTiddlers.DevFirePageTemplate = "<div class='header' macro='gradient vert #390108 #900'>\sn<div class='headerShadow'>\sn<span class='siteTitle' refresh='content' tiddler='SiteTitle'></span>&nbsp;\sn<span class='siteSubtitle' refresh='content' tiddler='SiteSubtitle'></span>\sn</div>\sn<div class='headerForeground'>\sn<span class='siteTitle' refresh='content' tiddler='SiteTitle'></span>&nbsp;\sn<span class='siteSubtitle' refresh='content' tiddler='SiteSubtitle'></span>\sn</div>\sn</div>\sn<div id='mainMenu' refresh='content' tiddler='MainMenu'></div>\sn<div id='sidebar'>\sn<div id='sidebarOptions' refresh='content' tiddler='SideBarOptions'></div>\sn<div id='sidebarTabs' refresh='content' force='true' tiddler='SideBarTabs'></div>\sn</div>\sn<div id='displayArea'>\sn<div id='messageArea'></div>\sn<div id='tiddlerDisplay'></div>\sn</div>";\n\nconfig.themes.push("DevFire");\n\n\nconfig.shadowTiddlers.ClassicBrownStyleSheet = "[[TagglyTaggingStyles]]\sn\sn/***\sn!TiddlyWiki Classic Color Scheme\snDesigned by Jeremy Ruston\sn\snTo use this color scheme copy the [[ClassicTiddlyWiki]] contents into a tiddler and name it 'StyleSheet' also grab the [[ClassicTemplate]] and copy its contents into a tiddler named 'PageTemplate'.\sn\sn!Colors Used\sn*@@bgcolor(#630):color(#fff): #630@@\sn*@@bgcolor(#930): #930@@\sn*@@bgcolor(#996633): #963@@\sn*@@bgcolor(#c90): #c90@@\sn*@@bgcolor(#cf6): #cf6@@\sn*@@bgcolor(#cc9): #cc9@@\sn*@@bgcolor(#ba9): #ba9@@\sn*@@bgcolor(#996): #996@@\sn*@@bgcolor(#300):color(#fff): #300@@\sn*@@bgcolor(#000000):color(#fff): #000@@\sn*@@bgcolor(#666): #666@@\sn*@@bgcolor(#888): #888@@\sn*@@bgcolor(#aaa): #aaa@@\sn*@@bgcolor(#ddd): #ddd@@\sn*@@bgcolor(#eee): #eee@@\sn*@@bgcolor(#ffffff): #fff@@\sn*@@bgcolor(#f00): #f00@@\sn*@@bgcolor(#ff3): #ff3@@\sn!Generic Rules /%==============================================%/\sn***/\sn/*{{{*/\snbody {\sn background: #fff;\sn color: #000;\sn}\sn\sna{\sn color: #963;\sn}\sn\sna:hover{\sn background: #963;\sn color: #fff;\sn}\sn\sna img{\sn border: 0;\sn}\sn\snh1,h2,h3,h4,h5 {\sn background: #cc9;\sn}\sn/*}}}*/\sn/***\sn!Header /%==================================================%/\sn***/\sn/*{{{*/\sn.header{\sn background: #300;\sn}\sn\sn.titleLine {\sn color: #fff;\sn padding: 5em 0em 1em .5em;\sn}\sn\sn.titleLine a {\sn color: #cf6;\sn}\sn\sn.titleLine a:hover {\sn background: transparent;\sn}\sn/*}}}*/\sn/***\sn!Main Menu /%=================================================%/\sn***/\sn/*{{{*/\sn#mainMenu .button {\sn color: #930;\sn}\sn\sn#mainMenu .button:hover {\sn color: #cf6;\sn background: #930;\sn}\sn\sn#mainMenu li{\sn list-style: none;\sn}\sn/*}}}*/\sn/***\sn!Sidebar options /%=================================================%/\sn~TiddlyLinks and buttons are treated identically in the sidebar and slider panel\sn***/\sn/*{{{*/\sn#sidebar {\sn background: #c90;\sn right: 0;\sn}\sn\sn#sidebarOptions a{\sn color: #930;\sn border: 0;\sn margin: 0;\sn padding: .25em .5em;\sn}\sn\sn#sidebarOptions a:hover {\sn color: #cf6;\sn background: #930;\sn}\sn\sn#sidebarOptions a:active {\sn color: #930;\sn background: #cf6;\sn}\sn\sn#sidebarOptions .sliderPanel {\sn background: #eea;\sn margin: 0;\sn}\sn\sn#sidebarOptions .sliderPanel a {\sn color: #930;\sn}\sn\sn#sidebarOptions .sliderPanel a:hover {\sn color: #cf6;\sn background: #930;\sn}\sn\sn#sidebarOptions .sliderPanel a:active {\sn color: #930;\sn background: #cf6;\sn}\sn/*}}}*/\sn/***\sn!Sidebar tabs /%=================================================%/\sn***/\sn/*{{{*/\sn.tabSelected,.tabContents {\sn background: #eea;\sn border: 0;\sn}\sn\sn.tabUnselected {\sn background: #c90;\sn}\sn\sn#sidebarTabs {\sn background: #c90;\sn}\sn\sn#sidebarTabs .tabSelected{\sn color: #cf6;\sn background: #963;\sn}\sn\sn#sidebarTabs .tabUnselected {\sn color: #cf6;\sn background: #930;\sn}\sn\sn#sidebarTabs .tabContents{\sn background: #963;\sn}\sn\sn#sidebarTabs .txtMoreTab .tabSelected,\sn#sidebarTabs .txtMoreTab .tabSelected:hover{\sn background: #930;\sn color: #cf6;\sn}\sn\sn#sidebarTabs .txtMoreTab .tabUnselected,\sn#sidebarTabs .txtMoreTab .tabUnselected:hover{\sn background: #300;\sn color: #cf6;\sn}\sn\sn#sidebarTabs .txtMoreTab .tabContents {\sn background: #930;\sn}\sn\sn#sidebarTabs .tabContents a {\sn color: #cf6;\sn border: 0;\sn}\sn\sn#sidebarTabs .button.highlight,\sn#sidebarTabs .tabContents a:hover {\sn background: #cf6;\sn color: #300;\sn}\sn/*}}}*/\sn/***\sn!Message Area /%=================================================%/\sn***/\sn/*{{{*/\sn#messageArea {\sn background: #930;\sn color: #fff;\sn}\sn\sn#messageArea a:link, #messageArea a:visited {\sn color: #c90;\sn}\sn\sn#messageArea a:hover {\sn color: #963;\sn background: transparent;\sn}\sn\sn#messageArea a:active {\sn color: #fff;\sn}\sn/*}}}*/\sn/***\sn!Popup /%=================================================%/\sn***/\sn/*{{{*/\sn.popup {\sn background: #eea;\sn border: 1px solid #930;\sn}\sn\sn.popup hr {\sn color: #963;\sn background: #963;\sn border-bottom: 1px;\sn}\sn\sn.popup li.disabled {\sn color: #ba9;\sn}\sn\sn.popup li a, .popup li a:visited {\sn color: #300;\sn}\sn\sn.popup li a:hover {\sn background: #930;\sn color: #eea;\sn}\sn/*}}}*/\sn/***\sn!Tiddler Display /%=================================================%/\sn***/\sn/*{{{*/\sn.tiddler .button {\sn color: #930;\sn}\sn\sn.tiddler .button:hover {\sn color: #cf6;\sn background: #930;\sn}\sn\sn.tiddler .button:active {\sn color: #fff;\sn background: #c90;\sn}\sn\sn.shadow .title {\sn color: #888;\sn}\sn\sn.title {\sn color: #422;\sn}\sn\sn.subtitle {\sn color: #866;\sn}\sn\sn.toolbar {\sn color: #aaa;\sn}\sn\sn.toolbar a,\sn.toolbar a:hover{\sn border: 0;\sn}\sn\sn.tagging, .tagged {\sn border: 1px solid #fff;\sn background-color: #ffc;\sn}\sn\sn.selected .tagging, .selected .tagged {\sn border: 1px solid #aa6;\sn background-color: #ffc;\sn}\sn\sn.tagging .listTitle, .tagged .listTitle {\sncolor: #999999;\sn}\sn\sn.footer {\sn color: #ddd;\sn}\sn\sn.selected .footer {\sn color: #888;\sn}\sn\sn.sparkline {\sn background: #eea;\sn border: 0;\sn}\sn\sn.sparktick {\sn background: #930;\sn}\sn\sn.errorButton {\sn color: #ff0;\sn background: #f00;\sn}\sn\sn.zoomer {\sn color: #963;\sn border: 1px solid #963;\sn}\sn/*}}}*/\sn/***\sn''The viewer is where the tiddler content is displayed'' /%------------------------------------------------%/\sn***/\sn/*{{{*/\sn.viewer .button {\sn background: #c90;\sn color: #300;\sn border-right: 1px solid #300;\sn border-bottom: 1px solid #300;\sn}\sn\sn.viewer .button:hover {\sn background: #eea;\sn color: #c90;\sn}\sn\sn.viewer .imageLink{\sn background: transparent;\sn}\sn\sn.viewer blockquote {\sn border-left: 3px solid #666;\sn}\sn\sn.viewer table {\sn border: 2px solid #303030;\sn}\sn\sn.viewer th, thead td {\sn background: #996;\sn border: 1px solid #606060;\sn color: #fff;\sn}\sn\sn.viewer td, .viewer tr {\sn border: 1px solid #606060;\sn}\sn\sn.viewer pre {\sn border: 1px solid #963;\sn background: #eea;\sn}\sn\sn.viewer code {\sn color: #630;\sn}\sn\sn.viewer hr {\sn border: 0;\sn border-top: dashed 1px #606060;\sn color: #666;\sn}\sn\sn.highlight, .marked {\sn background: #ff3;\sn}\sn/*}}}*/\sn/***\sn''The editor replaces the viewer in the tiddler'' /%------------------------------------------------%/\sn***/\sn/*{{{*/\sn.editor input {\sn border: 1px solid #000;\sn}\sn\sn.editor textarea {\sn border: 1px solid #000;\sn width: 100%;\sn}\sn\sn.editorFooter {\sn color: #aaa;\sn}\sn\sn.editorFooter a {\sn color: #930;\sn}\sn\sn.editorFooter a:hover {\sn color: #cf6;\sn background: #930;\sn}\sn\sn.editorFooter a:active {\sn color: #fff;\sn background: #c90;\sn}\sn/*}}}*/";\n\nconfig.shadowTiddlers.ClassicBrownPageTemplate = "<div class='header'>\sn<div class='titleLine'>\sn<span class='siteTitle' refresh='content' tiddler='SiteTitle'></span>&nbsp;\sn<span class='siteSubtitle' refresh='content' tiddler='SiteSubtitle'></span>\sn</div>\sn</div>\sn<div id='mainMenu' refresh='content' tiddler='MainMenu'></div>\sn<div id='sidebar'>\sn<div macro='gradient vert #ffffff #cc9900'>\sn<div id='sidebarOptions' refresh='content' tiddler='SideBarOptions'></div>\sn</div>\sn<div id='sidebarTabs' refresh='content' force='true' tiddler='SideBarTabs'></div>\sn</div>\sn<div id='displayArea'>\sn<div id='messageArea'></div>\sn<div id='tiddlerDisplay'></div>\sn</div>";\n\nconfig.themes.push("ClassicBrown");\n//}}}\n/***\n!~MonkeyPirateTiddlyWiki Themes\nCreated by Simon Baird from http://simonbaird.com/mptw/\n***/\n//{{{\n\n// couple of extra bits\nconfig.shadowTiddlers.HorizontalMainMenuStyles = "/***\snTo use, add {{{[[HorizontalMainMenuStyles]]}}} to your StyleSheet tiddler, or you can just paste the CSS in directly. See also HorizontalMainMenu and PageTemplate.\sn***/\sn/*{{{*/\sn\sn#topMenu br {display:none; }\sn#topMenu { background: #39a; }\sn#topMenu { padding:2px; }\sn#topMenu .button, #topMenu .tiddlyLink {\sn margin-left:0.5em; margin-right:0.5em;\sn padding-left:3px; padding-right:3px;\sn color:white; font-size:115%;\sn}\sn#topMenu .button:hover, #topMenu .tiddlyLink:hover { background:#178;}\sn\sn#displayArea { margin: 1em 15.7em 0em 1em; } /* so we use the freed up space */\sn\sn/* just in case want some QuickOpenTags in your topMenu */\sn#topMenu .quickopentag { padding:0px; margin:0px; border:0px; }\sn#topMenu .quickopentag .tiddlyLink { padding-right:1px; margin-right:0px; }\sn#topMenu .quickopentag .button { padding-left:1px; margin-left:0px; border:0px; }\sn\sn\sn/*}}}*/";\n\nconfig.shadowTiddlers.SideBarWhiteAndGrey = "/***\snThis CSS by DaveBirss.\sn***/\sn/*{{{*/\sn\sn.tabSelected {\sn background: #fff;\sn}\sn\sn.tabUnselected {\sn background: #eee;\sn}\sn\sn#sidebar {\sn color: #000;\sn background: transparent; \sn}\sn\sn#sidebarOptions {\sn background: #fff;\sn}\sn\sn#sidebarOptions .button {\sn color: #999;\sn}\sn\sn#sidebarOptions .button:hover {\sn color: #000;\sn background: #fff;\sn border-color:white;\sn}\sn\sn#sidebarOptions .button:active {\sn color: #000;\sn background: #fff;\sn}\sn\sn#sidebarOptions .sliderPanel {\sn background: transparent;\sn}\sn\sn#sidebarOptions .sliderPanel A {\sn color: #999;\sn}\sn\sn#sidebarOptions .sliderPanel A:hover {\sn color: #000;\sn background: #fff;\sn}\sn\sn#sidebarOptions .sliderPanel A:active {\sn color: #000;\sn background: #fff;\sn}\sn\sn.sidebarSubHeading {\sn color: #000;\sn}\sn\sn#sidebarTabs {`\sn background: #fff\sn}\sn\sn#sidebarTabs .tabSelected {\sn color: #000;\sn background: #fff;\sn border-top: solid 1px #ccc;\sn border-left: solid 1px #ccc;\sn border-right: solid 1px #ccc;\sn border-bottom: none;\sn}\sn\sn#sidebarTabs .tabUnselected {\sn color: #999;\sn background: #eee;\sn border-top: solid 1px #ccc;\sn border-left: solid 1px #ccc;\sn border-right: solid 1px #ccc;\sn border-bottom: none;\sn}\sn\sn#sidebarTabs .tabContents {\sn background: #fff;\sn}\sn\sn\sn#sidebarTabs .txtMoreTab .tabSelected {\sn background: #fff;\sn}\sn\sn#sidebarTabs .txtMoreTab .tabUnselected {\sn background: #eee;\sn}\sn\sn#sidebarTabs .txtMoreTab .tabContents {\sn background: #fff;\sn}\sn\sn#sidebarTabs .tabContents .tiddlyLink {\sn color: #999;\sn}\sn\sn#sidebarTabs .tabContents .tiddlyLink:hover {\sn background: #fff;\sn color: #000;\sn}\sn\sn#sidebarTabs .tabContents {\sn color: #000;\sn}\sn\sn#sidebarTabs .button {\sn color: #666;\sn}\sn\sn#sidebarTabs .tabContents .button:hover {\sn color: #000;\sn background: #fff;\sn}\sn\sn\sn/*}}}*/";\n\n\nconfig.shadowTiddlers.MPTWStyleSheet = "/***\snCosmetic fixes that probably should be included in a future TW...\sn***/\sn/*{{{*/\sn.viewer .listTitle { list-style-type:none; margin-left:-2em; }\sn.editorFooter .button { padding-top: 0px; padding-bottom:0px; }\sn/*}}}*/\sn/***\snImportant stuff. See TagglyTaggingStyles and HorizontalMainMenuStyles\sn***/\sn/*{{{*/\sn[[TagglyTaggingStyles]]\sn[[HorizontalMainMenuStyles]]\sn/*}}}*/\sn/***\snClint's fix for weird IE behaviours\sn***/\sn/*{{{*/\snbody {position:static;}\sn.tagClear{margin-top:1em;clear:both;}\sn/*}}}*/\sn/***\snJust colours, fonts, tweaks etc. See SideBarWhiteAndGrey\sn***/\sn/*{{{*/\snbody {background:#eee; /* font-size:103%; */}\sna{ color: #069; }\sna:hover{ background: #069; color: #fff; }\sn.popup { background: #178; border: 1px solid #069; }\sn.headerForeground a { color: #6fc;}\sn.headerShadow { left: 2px; top: 2px; }\sn.title { padding:0px; margin:0px; }\sn.siteSubtitle { padding:0px; margin:0px; padding-left:1.5em; }\sn.subtitle { font-size:90%; color:#ccc; padding-left:0.25em; }\snh1,h2,h3,h4,h5 { color: #000; background: transparent; }\sn.title {color:black; font-size:2em;}\sn.shadow .title {color:#999; }\sn.viewer pre { background-color:#f8f8ff; border-color:#ddf; }\sn.viewer { padding-top:0px; }\sn.editor textarea { font-family:monospace; }\sn#sidebarOptions { border:1px #ccc solid; }\sn.tiddler {\sn border-bottom:1px solid #ccc; border-right:1px solid #ccc; padding-bottom:1em; margin-bottom:1em; \sn background:#fff; padding-right:1.5em; }\sn#messageArea { background-color:#bde; border-color:#8ab; border-width:4px; border-style:dotted; font-size:90%; }\sn#messageArea .button { text-decoration:none; font-weight:bold; background:transparent; border:0px; }\sn#messageArea .button:hover {background: #acd; }\sn[[SideBarWhiteAndGrey]]\sn\sn.viewer td {vertical-align:top;}\sn\sn.viewer table.noBorder {border-style:none;}\sn.viewer table.noBorder td {border-style:none;}\sn.viewer table.threeCol td {width:33%;}\sn\sn#adsense {\sn margin: 1em 15.7em 0em 1em; border:1px solid #ddd;\sn background:#f8f8f8; text-align:center;margin-bottom:1em;overflow:hidden;padding:0.5em;} \sn\sn.sliderPanel { margin-left: 2em; }\sn\sn.viewer th { background:#ddd; color:black; }\sn/*}}}*/\sn/*{{{*/\sn/* for testing clint's new formatter. eg {{red{asdfaf}}} */\sn.red { color:white; background:red; display:block; padding:1em; } \sn\sn/* FF doesn't need this. but IE seems to want to make first one white */\sn.txtMainTab .tabset { background:#eee; }\sn.txtMoreTab .tabset { background:transparent; }\sn\sn.faq ol li { padding-top:1em; font-size:120%; }\sn.faq ol ul li { padding-top:0px; font-size:100%; }\sn\sn/*}}}*/\sn";\n\nconfig.shadowTiddlers.MPTWPageTemplate = "<!---\snI've just tweaked my gradient colours and the topMenu bit. See HorizontalMainMenu.\sn--->\sn<!--{{{-->\sn<div class='header' macro='gradient vert #000 #069'>\sn<div class='headerShadow'>\sn<span class='siteTitle' refresh='content' tiddler='SiteTitle'></span>&nbsp;\sn<span class='siteSubtitle' refresh='content' tiddler='SiteSubtitle'></span>\sn</div>\sn<div class='headerForeground'>\sn<span class='siteTitle' refresh='content' tiddler='SiteTitle'></span>&nbsp;\sn<span class='siteSubtitle' refresh='content' tiddler='SiteSubtitle'></span>\sn</div>\sn<div id='topMenu' refresh='content' tiddler='MainMenu'></div>\sn</div>\sn<div id='sidebar'>\sn<div id='sidebarOptions' refresh='content' tiddler='SideBarOptions'></div>\sn<div id='sidebarTabs' refresh='content' force='true' tiddler='SideBarTabs'></div>\sn</div>\sn<div id='displayArea'>\sn<div id='messageArea'></div>\sn<div id='tiddlerDisplay'></div>\sn</div>\sn<!--}}}-->\sn";\n\nconfig.themes.push("MPTW");\n\n\nconfig.shadowTiddlers.MPTWCurvesStyleSheet = "/*{{{*/\sn[[MPTWStyleSheet]]\sn.tiddler { -moz-border-radius: 2em;}\sn.button { -moz-border-radius: 1em;}\sn#sidebarOptions { -moz-border-radius: 0 0 1em 1em;}\sn.tab { -moz-border-radius: 1em 1em 0 0;}\sn.tabContents { -moz-border-radius: 1em 1em 0 0;}\sn/*}}}*/";\n\nconfig.shadowTiddlers.MPTWCurvesPageTemplate = config.shadowTiddlers.MPTWPageTemplate;\n\nconfig.themes.push("MPTWCurves");\n\n//}}}\n/***\n!~GTDd3\nCreated by Tomo (Tom Otvos) from http://www.dcubed.ca\n(Based on the original GTD theme by Nathan Bowers at http://snapgrid.com)\n***/\n//{{{\nconfig.shadowTiddlers.GTDd3PageTemplate = "<div class='header'>\sn<div class='headerShadow'>\sn<span class='siteTitle' refresh='content' tiddler='SiteTitle'></span>&nbsp;\sn<span class='siteSubtitle' refresh='content' tiddler='SiteSubtitle'></span>\sn</div>\sn<div class='headerForeground'>\sn<span class='siteTitle' refresh='content' tiddler='SiteTitle'></span>&nbsp;\sn<span class='siteSubtitle' refresh='content' tiddler='SiteSubtitle'></span>\sn</div>\sn</div>\sn<div id='mainMenu' refresh='content' tiddler='MainMenu' force='true'></div>\sn<div id='sidebar'>\sn<div id='sidebarOptions' refresh='content' tiddler='SideBarOptions'></div>\sn<div id='sidebarTabs' refresh='content' force='true' tiddler='SideBarTabs'></div>\sn</div>\sn<div id='displayArea'>\sn<div id='messageArea'></div>\sn<div id='tiddlerDisplay'></div>\sn</div>";\n\nconfig.shadowTiddlers.GTDd3StyleSheet = "/***\sn!GTD specific styles\sn***/\sn\sn/*{{{*/\sn\sn/* the tagging popup really gets in the way so push it off to the side */\sn.tagging { float: right; }\sn\sn/* this unbullets actions in the actionList macro */\snul.gtdActionList { list-style-type: none; }\snli.gtdActionListProject, li.gtdActionListContext { margin-top: 1.0em; }\sn\sn.gtdCompletedActionItem { text-decoration: line-through; }\sn.gtdNextActionItem { border-bottom: 1px solid red; }\sn\sn/*}}}*/\sn\sn/***\sn!Imported 3x5 printing styles\sn//adapted from the work of Clint Checketts, http://www.checkettsweb.com/tw/gtd_tiddlywiki.htm //\sn***/\sn\sn/*{{{*/\sn\sn@media print {\sn#mainMenu, #sidebar, #messageArea {display: none !important;}\sn#displayArea {margin: 1em 1em 0em 1em;}\sn\sn\sn/* LAYOUT ELEMENTS ========================================================== */\sn*\sn{\sn margin: 0;\sn padding: 0;\sn}\sn\sn#contentWrapper\sn{\sn margin: 0;\sn width: 100%;\sn position: static;\sn}\sn\snbody {\sn background: #fff;\sn color: #000;\sn font-size: 6.2pt;\sn font-family: \s"Lucida Grande\s", \s"Bitstream Vera Sans\s", Helvetica, Verdana, Arial, sans-serif;\sn}\sn\snimg {\sn max-width: 2.2in;\sn max-height: 4.3in;\sn}\sn\sn#header, #side_container, #storeArea, #copyright, #floater, #messageArea, .save_accesskey, .site_description, #saveTest, .toolbar, .header, .footer, .tagging, .tagged\sn{\sn display: none;\sn}\sn\sn#tiddlerDisplay, #displayArea\sn{\sn display: inline;\sn}\sn\sn.tiddler {\sn margin: 0 0 2em 0;\sn border-top: 1px solid #000;\sn page-break-before: always;\sn}\sn\sn.tiddler:first-child {\sn page-break-before: ;\sn}\sn\sn.title {\sn font-size: 1.6em;\sn font-weight: bold;\sn margin-bottom: .3em;\sn padding: .2em 0;\sn border-bottom: 1px dotted #000;\sn}\sn\snp, blockquote, ul, li, ol, dt, dd, dl, table\sn{\sn margin: 0 0 .3em 0;\sn}\sn\snh1, h2, h3, h4, h5, h6\sn{\sn margin: .2em 0;\sn} \sn\snh1\sn{\sn font-size: 1.5em;\sn}\sn\snh2\sn{\sn font-size: 1.3em;\sn}\sn\snh3\sn{\sn font-size: 1.25em;\sn}\sn\snh4\sn{\sn font-size: 1.15em;\sn}\sn\snh5\sn{\sn font-size: 1.1em;\sn}\sn\snblockquote\sn{\sn margin: .6em;\sn padding-left: .6em;\sn border-left: 1px solid #ccc;\sn}\sn\snul\sn{\sn list-style-type: circle;\sn}\sn\snli\sn{\sn margin: .1em 0 .1em 2em;\sn line-height: 1.4em; \sn}\sn\sntable\sn{\sn border-collapse: collapse;\sn font-size: 1em;\sn}\sn\sntd, th\sn{\sn border: 1px solid #999;\sn padding: .2em;\sn}\sn\snhr {\sn border: none;\sn border-top: dotted 1px #777;\sn height: 1px;\sn color: #777;\sn margin: .6em 0;\sn}\sn}\sn/*}}}*/\sn\sn/***\sn!Imported styles for calendar plugin\sn***/\sn\sn/*{{{*/\sn.calendar{\sn border-bottom: 1px solid #550000;\sn}\sn\sn.viewer .calendar{\sn width: 220px;\sn}\sn\sn#mainMenu .calendar{\sn font-size: 8px;\sn cursor: pointer;\sn width: 100%;\sn border: 0;\sn border-collapse: collapse;\sn}\sn\sn#mainMenu .calendar .button{\sn border: 0;\sn}\sn\sn#mainMenu .calendar td{\sn font-size: 8pt;\sn padding: 0;\sn background: #fff;\sn border: 0;\sn}\sn\sn#mainMenu .calendar a{\sn margin: 0;\sn color: #000;\sn background: transparent;\sn}\sn\sn#mainMenu .calendar a:hover{\sn color: #000;\sn background: transparent;\sn}\sn\sn#mainMenu .calendarMonthname,\sn#mainMenu .calendar .calendarMonthTitle td a{\sn color: #fff;\sn}\sn\sn#mainMenu .calendarDaysOfWeek td{\sn background: #500;\sn color: #fff;\sn}\sn/*}}}*/\sn\sn\sn/***\sn!Layout Rules /%==============================================%/\sn***/\sn/*{{{*/\sn\snbody { position: static; }\sn\sn.headerForeground, .headerShadow {\sn padding-top: 1em;\sn}\sn\sn.tiddler {\sn margin: 0 0 0.9em 0;\sn padding-bottom: 1em;\sn}\sn\sn#mainMenu {\sn width: 16em;\sn font-size: 1em;\sn text-align: left;\sn}\sn\sn#mainMenu * {\sn font-size: 1em;\sn font-weight: normal;\sn padding: 0; margin: 0; border: 0;\sn}\sn\sn#mainMenu ul {\sn list-style: none;\sn margin-bottom: 10px;\sn}\sn\sn#mainMenu li {\sn text-indent: 1em;\sn}\sn\sn#mainMenu a.button, #mainMenu a.tiddlyLink, #mainMenu a.externalLink {\sn display: block; margin: 0;\sn}\sn\sn#displayArea {\sn margin-left: 19em;\sn}\sn\sn/*}}}*/\sn\sn/***\sn!Colors Used\sn*@@bgcolor(#8cf): #8cf - Background blue@@\sn*@@bgcolor(#18f): #18f - Top blue@@\sn*@@bgcolor(#04b): #04b - Mid blue@@\sn*@@bgcolor(#014):color(#fff): #014 - Bottom blue@@\sn*@@bgcolor(#ffc): #ffc - Bright yellow@@\sn*@@bgcolor(#fe8): #fe8 - Highlight yellow@@\sn*@@bgcolor(#db4): #db4 - Background yellow@@\sn*@@bgcolor(#841): #841 - Border yellow@@\sn*@@bgcolor(#703):color(#fff): #703 - Title red@@\sn*@@bgcolor(#866): #866 - Subtitle grey@@\sn!Generic Rules /%==============================================%/\sn***/\sn/*{{{*/\snbody {\sn background: #464646;\sn color: #000;\sn}\sn\sna{\sn color: #04b;\sn}\sn\sna:hover{\sn background: #04b;\sn color: #fff;\sn}\sn\sna img{\sn border: 0;\sn}\sn\snh1,h2,h3,h4,h5 {\sn color: #000;\sn background: #eee;\sn}\sn\sn.button {\sn color: #014;\sn border: 1px solid #fff;\sn}\sn\sn.button:hover {\sn color: #014;\sn background: #fe8;\sn border-color: #db4;\sn}\sn\sn.button:active {\sn color: #fff;\sn background: #db4;\sn border: 1px solid #841;\sn}\sn\sn/*}}}*/\sn/***\sn!Header /%==================================================%/\sn***/\sn/*{{{*/\sn.header {\sn background: #000;\sn}\sn\sn.headerShadow {\sn color: #000;\sn}\sn\sn.headerShadow a {\sn font-weight: normal;\sn color: #000;\sn}\sn\sn.headerForeground {\sn color: #cf6;\sn}\sn\sn.headerForeground a {\sn font-weight: normal;\sn color: #cf6;\sn}\sn\sn/* ??? what is up when you specify a site title colour in IE ??? */\sn/* .siteTitle { color: red; } */\sn\sn/*}}}*/\sn/***\sn!General tabs /%=================================================%/\sn***/\sn/*{{{*/\sn\sn.tabSelected {\sn color: #fff;\sn background: #960;\sn border: none;\sn}\sn\sn.tabUnselected {\sn color: #fff;\sn background: #660;\sn}\sn\sn.tabContents {\sn color: #004;\sn background: #960;\sn border: none;\sn}\sn\sn.tabContents .button, .tabContents a {\sn border: none;\sn color: #fff;\sn}\sn\sn.tabContents a:hover, .tabset a:hover {\sn background: #000;\sn}\sn\sn/* make nested tab areas look different */\sn.tabContents .tabSelected, .tabContents .tabContents {\sn background: #700;\sn color: #fff;\sn}\sn\sn.tabContents .tabContents {\sn color: #eeb;\sn}\sn\sn/*}}}*/\sn/***\sn!Main Menu /%=================================================%/\sn***/\sn/*{{{*/\sn#mainMenu {\sn background: #700;\sn color: #fff;\sn border-right: 3px solid #500;\sn}\sn\sn#mainMenu * {\sn color: #fff;\sn}\sn\sn#mainMenu a.button, #mainMenu a.tiddlyLink, #mainMenu a.externalLink {\sn border: none;\sn border-bottom: 1px solid #500;\sn border-top: 1px solid #900;\sn}\sn\sn#mainMenu a:hover,\sn#mainMenu a.button:hover {\sn background-color: #b00;\sn color: #fff;\sn}\sn\sn/*}}}*/\sn/***\sn!Sidebar options /%=================================================%/\sn~TiddlyLinks and buttons are treated identically in the sidebar and slider panel\sn***/\sn/*{{{*/\sn#sidebar {\sn color: #000;\sn background: #eeb;\sn border-right: 3px solid #bb8;\sn border-bottom: 3px solid #520;\sn}\sn\sn#sidebarOptions input {\sn border: 1px solid #04b;\sn}\sn\sn#sidebarOptions .sliderPanel {\sn background: #fff;\sn}\sn\sn#sidebarOptions .sliderPanel a {\sn border: none;\sn color: #700;\sn}\sn\sn#sidebarOptions .sliderPanel a:hover {\sn color: #fff;\sn background: #700;\sn}\sn\sn#sidebarOptions .sliderPanel a:active {\sn color: #700;\sn background: #fff;\sn}\sn\sn#sidebarOptions a {\sn color: #700;\sn border: none;\sn}\sn\sn#sidebarOptions a:hover, #sidebarOptions a:active {\sn color: #fff;\sn background: #700;\sn}\sn\sn/*}}}*/\sn/***\sn!Message Area /%=================================================%/\sn***/\sn/*{{{*/\sn#messageArea {\sn border-right: 3px solid #da1;\sn border-bottom: 3px solid #a80;\sn background: #ffe72f;\sn color: #014;\sn}\sn\sn#messageArea .button {\sn padding: 0.2em 0.2em 0.2em 0.2em;\sn color: #014;\sn background: #fff;\sn}\sn\sn/*}}}*/\sn/***\sn!Popup /%=================================================%/\sn***/\sn/*{{{*/\sn.popup {\sn background: #333;\sn border: none;\sn}\sn\sn.popup hr {\sn color: #000;\sn}\sn\sn.popup li.disabled {\sn color: #666;\sn background: #cf6;\sn}\sn\sn.popup li a, .popup li a:visited {\sn color: #000;\sn border: 1px outset #cf6;\sn background: #cf6;\sn}\sn\sn.popup li a:hover {\sn color: #000;\sn border: 1px outset #cf6;\sn background: #ef9;\sn}\sn/*}}}*/\sn/***\sn!Tiddler Display /%=================================================%/\sn***/\sn/*{{{*/\sn.tiddler {\sn background: #fff;\sn border-right: 3px solid #aaa;\sn border-bottom: 3px solid #555;\sn}\sn\sn.tiddler .defaultCommand {\sn font-weight: bold;\sn}\sn\sn.shadow .title {\sn color: #866;\sn}\sn\sn.title {\sn color: #900;\sn}\sn\sn.subtitle {\sn color: #866;\sn}\sn\sn.toolbar {\sn color: #000;\sn}\sn\sn.toolbar .button {\sn background: #cf6;\sn border: 1px outset #cf6;\sn}\sn\sn.toolbar .button:hover {\sn background: #ef9;\sn}\sn\sn.tagging, .tagged {\sn border: 1px solid #eee;\sn background-color: #eee;\sn}\sn\sn.selected .tagging, .selected .tagged {\sn background-color: #ddd;\sn border: 1px solid #bbb;\sn}\sn\sn.tagging .listTitle, .tagged .listTitle {\sn color: #014;\sn}\sn\sn.tagging .button, .tagged .button {\sn border: none;\sn}\sn\sn.footer {\sn color: #ddd;\sn}\sn\sn.selected .footer {\sn color: #888;\sn}\sn\sn.sparkline {\sn background: #8cf;\sn border: 0;\sn}\sn\sn.sparktick {\sn background: #014;\sn}\sn\sn.errorButton {\sn color: #ff0;\sn background: #f00;\sn}\sn\sn.cascade {\sn background: #eef;\sn color: #aac;\sn border: 1px solid #aac;\sn}\sn\sn.imageLink, #displayArea .imageLink {\sn background: transparent;\sn}\sn\sn/*}}}*/\sn/***\sn''The viewer is where the tiddler content is displayed'' /%------------------------------------------------%/\sn***/\sn/*{{{*/\sn\sn.viewer .listTitle {list-style-type: none; margin-left: -2em;}\sn\sn.viewer .button {\sn border: 1px solid #db4;\sn}\sn\sn.viewer blockquote {\sn border-left: 3px solid #666;\sn}\sn\sn.viewer table {\sn border: 2px solid #333;\sn}\sn\sn.viewer th, thead td {\sn background: #db4;\sn border: 1px solid #666;\sn color: #fff;\sn}\sn\sn.viewer td, .viewer tr {\sn border: 1px solid #666;\sn}\sn\sn.viewer pre {\sn border: 1px solid #fe8;\sn background: #ffc;\sn}\sn\sn.viewer code {\sn color: #703;\sn}\sn\sn.viewer hr {\sn border: 0;\sn border-top: dashed 1px #666;\sn color: #666;\sn}\sn\sn.highlight, .marked {\sn background: #fe8;\sn}\sn/*}}}*/\sn/***\sn''The editor replaces the viewer in the tiddler'' /%------------------------------------------------%/\sn***/\sn/*{{{*/\sn.editor input {\sn border: 1px solid #04b;\sn}\sn\sn.editor textarea {\sn border: 1px solid #04b;\sn width: 100%;\sn}\sn\sn.editorFooter {\sn color: #aaa;\sn}\sn\sn/*}}}*/\sn/***\sn!Personal preferences\sn***/\sn\sn/*{{{*/\sn/* not required, but the menu looks a whole lot nicer flushed left */\sn#mainMenu { text-align: left; }\sn/* make input fields in viewer (options) show up in correct size */\sn.viewer input { font-size: 0.9em; }\sn/*}}}*/\sn";\n\nconfig.themes.push("GTDd3");\n\n\n//}}}\n\n
<html><table bgcolor="#ccecff" width=100% border="1"><tr valign="top"><td><b>Box 1.1 The "Hockey Stick" Debate.</b><p>Much discussion has focused on whether the current trend in rising global temperatures is unprecedented or within the range expected from natural variations. This is commonly referred to as the "Hockey Stick" debate as it discusses the validity of figures that show sustained temperatures for around 1000 years and then a sharp increase since around 1800 (for example, Mann et al. 1999, shown as a purple line in the figure below).\n<p>\nSome have interpreted the "Hockey Stick" as definitive proof of the human influence on climate. However, others have suggested that the data and methodologies used to produce this type of figure are questionable (e.g. von Storch et al. 2004), because widespread, accurate temperature records are only available for the past 150 years. Much of the temperature record is recreated from a range of 'proxy' sources such as tree rings, historical records, ice cores, lake sediments and corals.\n<p>\nClimate change arguments do not rest on "proving" that the warming trend is unprecedented over the past Millennium. Whether or not this debate is now settled, this is only one in a number of lines of evidence for human induced climate change. The key conclusion, that the build-up of greenhouse gases in the atmosphere will lead to several degrees of warming, rests on the laws of physics and chemistry and a broad range of evidence beyond one particular graph.\n<p>\n<blockquote><i>Reconstruction of annual temperature changes in the Northern Hemisphere for the past millennium using a range of proxy indicators by several authors. The figure suggests that the sharp increase in global temperatures since around 1850 has been unprecedented over the past millennium. Source: IDAG (2005)</i></blockquote>\n<p>\n<center><img src="box-1-1.jpg">></center>\n<p>\nRecent research, for example from the Ad hoc detection and attribution group (IDAG), uses a wider range of proxy data to support the broad conclusion that the rate and scale of 20th century warming is greater than in the past 1000 years (at least for the Northern Hemisphere). Based on this kind of analysis, the US National Research Council (2006)11 concluded that there is a high level of confidence that the global mean surface temperature during the past few decades is higher than at any time over the preceding four centuries. But there is less confidence beyond this. However, they state that in some regions the warming is unambiguously shown to be unprecedented over the past millennium.\n</td></tr></table></html>
<html><table bgcolor="#ccecff" width=100% border="1"><tr valign="top"><td><b>Box 1.2 Recent advances in estimating climate sensitivity</b><p>Climate sensitivity remains an area of active research. Recently, new approaches have used climate models and observations to develop a better understanding of climate sensitivity.\n<p>\n<ul><li>Several studies have estimated climate sensitivity by benchmarking climate models against the observed warming trend of the 20th century, e.g. Forest et al. (2006) and Knutti et al. (2002).\n<p>\n<li>Building on this work, modellers have systematically varied a range of uncertain parameters in more complex climate models (such as those controlling cloud behaviour) and run ensembles of these models, e.g. Murphy et al. (2004) and Stainforth et al. (2005). The outputs are then checked against observational data, and the more plausible outcomes (judged by their representation of current climate) are weighted more highly in the probability distributions produced.\n<p>\n<li>Some studies, e.g. Annan & Hargreaves (2006), have used statistical techniques to estimate climate sensitivity through combining several observational datasets (such as the 20th century warming, cooling following volcanic eruptions, warming after last glacial maximum).</ul>\n<p>\nThese studies provide an important first attempt to apply a probabilistic framework to climate projections. Their outcome is a series of probability distribution functions (PDFs) that aim to capture some of the uncertainty in current estimates. Meinhausen (2006) brings together the results of eleven recent studies (below). The red and blue lines are probability distributions based on the IPCC TAR (Wigley and Raper (2001)) and recent Hadley Centre ensemble work (Murphy et al. (2004)), respectively. These two distributions lie close to the centre of the results from the eleven studies.\n<p>\n<center><img src="box-1-2.jpg">></center>\n<p>\n<i>Source: Reproduced from Meinhausen (2006)</i>\n<p>\nThe distributions share the characteristic of a long tail that stretches up to high temperatures. This is primarily because of uncertainty over clouds20 and the cooling effect of aerosols. For example, if cloud properties are sensitive to climate change, they could create an important addition feedback. Similarly, if the cooling effect of aerosols is large it will have offset a substantial part of past warming due to greenhouse gases, making high climate sensitivity compatible with the observed warming.\n</td></tr></table></html>
<html><table bgcolor="#ccecff" width=100% border="1"><tr valign="top"><td><b>Box 1.3 Changes in the earth system that could amplify global warming</b><p><b>Weakening of Natural Land-Carbon Sinks</b>: Initially, higher levels of carbon dioxide in the atmosphere will act as a fertiliser for plants, increasing forest growth and the amount of carbon absorbed by the land. A warmer climate will increasingly offset this effect through an increase in plant and soil respiration (increasing release of carbon from the land). Recent modelling suggests that net absorption may initially increase because of the carbon fertilisation effects (chapter 3). But, by the end of this century it will reduce significantly as a result of increased respiration and limits to plant growth (nutrient and water availability).28\n<p>\n<b>Weakening of Natural Ocean-Carbon Sinks</b>: The amount of carbon dioxide absorbed by the oceans is likely to weaken in the future through a number of chemical, biological and physical changes. For example, chemical uptake processes may be exhausted, warming surface waters will reduce the rate of absorption and CO<sub>2</sub> absorbing organisms are likely to be damaged by ocean acidification29. Most carbon cycle models agree that climate change will weaken the ocean sink, but suggest that this would be a smaller effect than the weakening of the land sink30.\n<p>\n<b>Release of Methane from Peat Deposits, Wetlands and Thawing Permafrost</b>: Thawing permafrost and the warming and drying of wetland areas could release methane (and carbon dioxide) to the atmosphere in the future. Models suggest that up to 90% of the upper layer of permafrost will thaw by 2100.31 These regions contain a substantial store of carbon. One set of estimates suggests that wetlands store equivalent to around 1600 GtCO<sub>2</sub>e (where Gt is one billion tonnes) and permafrost soils store a further 1500 GtCO<sub>2</sub>e32. Together these stores comprise more than double the total cumulative emissions from fossil fuel burning so far. Recent measurements show a 10 - 15% increase in the area of thaw lakes in northern and western Siberia. In northern Siberia, methane emissions from thaw lakes are estimated to have increased by 60% since the mid 1970's33. It remains unclear at what rate methane would be released in the future. Preliminary estimates indicate that, in total, methane emissions each year from thawing permafrost and wetlands could increase by around 4 - 10 GtCO<sub>2</sub>e, more than 50% of current methane emissions and equivalent to 10 - 25% of current man-made emissions.34\n<p>\n<b>Release of Methane from Hydrate Stores</b>: An immense quantity of methane (equivalent to tens of thousands of GtCO<sub>2</sub>, twice as much as in coal, oil and gas reserves) may also be trapped under the oceans in the form of gas hydrates. These exist in regions sufficiently cold and under enough high pressures to keep them stable. There is considerable uncertainty whether these deposits will be affected by climate change at all. However, if ocean warming penetrated deeply enough to destabilise even a small amount of this methane and release it to the atmosphere, it would lead to a rapid increase in warming.35 Estimates of the size of potential releases are scarce, but are of a similar scale to those from wetlands and permafrost.\n</td></tr></table></html>
<html><table bgcolor="#ccecff" width=100% border="1"><tr valign="top"><td><b>Box 1.4 Ice sheets and sea level rise</b><p>Melting ice sheets are already contributing a small amount to sea level rise. Most of recent and current global sea level rise results from the thermal expansion of the ocean with a contribution from glacier melt. As global temperatures rise, the likelihood of substantial contributions from melting ice sheets increases, but the scale and timing remain highly uncertain. While some models project that the net contribution from ice sheets will remain close to zero or negative over the coming century, recent observations suggest that the Greenland and West Antarctic ice sheets may be more vulnerable to rising temperatures than is projected by current climate models:\n<p>\n<ul><li><b>Greenland Ice Sheet</b>. Measurements of the Greenland ice sheet have shown a slight inland growth,58 but significant melting and an acceleration of ice flows near the coast,59 greater than predicted by models. Melt water is seeping down through the crevices of the melting ice, lubricating glaciers and accelerating their movement to the ocean. Some models suggest that as local temperatures exceed 3 - 4.5°C (equivalent to a global increase of around 2 - 3°C) above pre-industrial,60 the surface temperature of the ice sheet will become too warm to allow recovery from summertime melting and the ice sheet will begin to melt irreversibly. During the last interglacial period, around 125,000 years ago when Greenland temperatures reached around 4 - 5°C above the present61, melting of ice in the Arctic contributed several metres to sea level rise.\n<p>\n<li><b>Collapse of the West Antarctic Ice Sheet</b>:62 In 2002, instabilities in the Larsen Ice Shelf led to the collapse of a section of the shelf the size of Rhode Island (Larsen B - over 3200 km2 - and 200 m thick) from the Antarctic Peninsula. The collapse has been associated with a sustained warming and resulting rapid thinning of Larsen B at a rate of just under 20 cm per year63. A similar rapid rate of thinning has now been observed on other parts of the WAIS around Amundsen Bay (this area alone contains enough water to raise sea levels by 1.5 m)64. Rivers of ice on the ice-sheet have been accelerating towards the ocean. It is possible that ocean warming and the acceleration of ice flows will destabilise the ice sheet and cause a runaway discharge into the oceans. Uncertainties over the dynamics of the ice sheet are so great that there are few estimates of critical thresholds for collapse. One study gives temperatures between 2°C and 5°C, but these remain disputed.</ul>\n</td></tr></table></html>
!!!Resolution on Information and Communications\nadopted by the\n''20th General Assembly''\nof the\n''Conference Of Non-Governmental Organizations in Consultative Status with ECOSOC (CONGO)''\nGeneva, Switzerland, 3-5 November, 1997\n!!!Information and Communications\n<<<\nThe //20th General Assembly of the Conference of NGOs//, meeting in Geneva from 3 to 5 November, 1997,\n\n//Recognizing// the continuing dramatic advances in information and communications technology, and the ways in which these advances are:\n* transforming access to, and participation in, the United Nations system;\n* creating a forum for non-governmental organizations that transcends national boundaries; and\n* enabling structural changes in the relationships between non-governmental organizations and national and local governments; \n//Recognizing also// that there exist very substantial disparities between countries, and within countries, in the extent to which there is effective access to the global information infrastructure;\n\n//Resolves// to consider how the Conference of NGOs and its member organizations can make use of modern information and communications technology to increase their effectiveness and to strengthen the participation of non-governmental organizations in the work of the United Nations system in order to promote the goals of the United Nations. \n<<<\n\n----\n\nResolution proposed by:\n: [[Information Habitat: Where Information Lives]]\n: International Council of Jewish Women
!The science of climate change: scale of the environment challenge\n!!Key Messages\n* An overwhelming body of scientific evidence now clearly indicates that climate change is a serious and urgent issue. The Earth's climate is rapidly changing, mainly as a result of increases in greenhouse gases caused by human activities.\n* Most climate models show that a doubling of pre-industrial levels of greenhouse gases is very likely to commit the Earth to a rise of between 2-5°C in global mean temperatures. This level of greenhouse gases will probably be reached between 2030 and 2060. A warming of 5°C on a global scale would be far outside the experience of human civilisation and comparable to the difference between temperatures during the last ice age and today. Several new studies suggest up to a 20% chance that warming could be greater than 5°C.\n* If annual greenhouse gas emissions remained at the current level, concentrations would be more than treble pre-industrial levels by 2100, committing the world to 3-10°C warming, based on the latest climate projections.\n* Some impacts of climate change itself may amplify warming further by triggering the release of additional greenhouse gases. This creates a real risk of even higher temperature changes.\n** Higher temperatures cause plants and soils to soak up less carbon from the atmosphere and cause permafrost to thaw, potentially releasing large quantities of methane.\n** Analysis of warming events in the distant past indicates that such feedbacks could amplify warming by an additional 1-2°C by the end of the century.\n* Warming is very likely to intensify the water cycle, reinforcing existing patterns of water scarcity and abundance and increasing the risk of droughts and floods.\n* Rainfall is likely to increase at high latitudes, while regions with Mediterranean-like climates in both hemispheres will experience significant reductions in rainfall. Preliminary estimates suggest that the fraction of land area in extreme drought at any one time will increase from 1% to 30% by the end of this century. In other regions, warmer air and warmer oceans are likely to drive more intense storms, particularly hurricanes and typhoons.\n* As the world warms, the risk of abrupt and large-scale changes in the climate system will rise.\n** Changes in the distribution of heat around the world are likely to disrupt ocean and atmospheric circulations, leading to large and possibly abrupt shifts in regional weather patterns.\n** If the Greenland or West Antarctic Ice Sheets began to melt irreversibly, the rate of sea level rise could more than double, committing the world to an eventual sea level rise of 5-12 m over several centuries.\n* The body of evidence and the growing quantitative assessment of risks are now sufficient to give clear and strong guidance to economists and policy-makers in shaping a response.\n''Contents of Chapter 1\n<<<\n''[[1.1 Introduction]]''\n''[[1.2 The Earth's climate is changing]]''\n''[[1.3 Linking Greenhouse Gases and Temperature]]''\n''[[1.4 Current Projections]]''\n''[[1.5 Large Scale Changes and Regional Impacts]]''\n''[[1.6 Conclusions]]''\n''[[1.7 References]]''\n''[[1.8 Notes]]''\n<<<\n----\nDownload pdf version of Chapter 1\nhttp://www.climate-change-two.net/stern-review/chapter-01.pdf 21pp. (585 Kb)
!Macroeconomic models of costs\n!!Key Messages\n* Broader behavioural modelling exercises suggest a wide range of costs of climate-change mitigation and abatement, mostly lying in the range -2 to +5% of annual GDP by 2050 for a variety of stabilisation paths. These capture a range of factors, including the shift away from carbon-intensive goods and services throughout economies as carbon prices rise, but differ widely in their assumptions about technologies and costs.\n* Overall, the expected annual cost of achieving emissions reductions, consistent with an emissions trajectory leading to stabilisation at around 500-550ppm CO~~2~~e, is likely to be around 1% of GDP by 2050, with a range of +/- 3%, reflecting uncertainties over the scale of mitigation required, the pace of technological innovation and the degree of policy flexibility.\n* Costs are likely to rise significantly as mitigation efforts become more ambitious or sudden, suggesting that efforts to reduce emissions rapidly are likely to be very costly.\n* The models arriving at the higher cost estimates for a given stabilisation path make assumptions about technological progress that are pessimistic by historical standards and improbable given the cost reductions in low-emissions technologies likely to take place as their use is scaled up.\n* Flexibility over the sector, technology, location, timing and type of emissions reductions is important in keeping costs down. By focusing mainly on energy and mainly on CO~~2~~, many of the model exercises overlook some low-cost abatement opportunities and are likely to over-estimate costs. Spreading the mitigation effort widely across sectors and countries will help to ensure that emissions are reduced where is it cheapest to do so, making policy cost-effective.\n* While cost estimates in these ranges are not trivial, they are also not high enough seriously to compromise the world's future standard of living - unlike climate change itself, which, if left unchecked, could pose much greater threats to growth (see Chapter 6). An annual cost rising to 1% of GDP by 2050 poses little threat to standards of living, given that economic output in the OECD countries is likely to rise in real terms by over 200% by then, and in developing regions as a whole by 400% or more.\n* How far costs are kept down will depend on the design and application of policy regimes in allowing for 'what', 'where' and 'when' flexibility in seeking lowcost approaches. Action will be required to bring forward low-GHG technologies, while giving the private sector a clear signal of the long-term policy environment (see Part IV).\n* Well-formulated policies with global reach and flexibility across sectors will allow strong economic growth to be sustained in both developed and developing countries, while making deep cuts in emissions.\n''Contents of Chapter 10\n<<<\n''10.1 Introduction''\n''10.2 Costs of emissions-saving measures: results from other models''\n''10.3 Key assumptions affecting cost estimates''\n''10.4 Understanding the scale of total global costs''\n''10.5 Conclusion''\n''10.6 References''\n<<<\n----\nDownload pdf version of Chapter 10\nhttp://www.climate-change-two.net/stern-review/chapter-10.pdf 14pp. (339 Kb)
!Structural change and competitiveness\n!!Key Messages\n* The costs of mitigation will not be felt uniformly across countries and sectors.\n* Greenhouse-gas-intensive sectors, and countries, will require the most structural adjustment, and the timing of action by different countries will affect the balance of costs and benefits.\n* If some countries move more quickly than others in implementing carbon reduction policies, there are concerns that carbon-intensive industries will locate in countries without such policies in place. A relatively small number of carbon-intensive industries could suffer significant impacts as an inevitable consequence of properly pricing the cost of greenhouse-gas (GHG) emissions.\n* The empirical evidence on trade and location decisions, however, suggests that only a small number of the worst affected sectors have internationally mobile plant and processes. Moreover, to the extent that these firms are open to competition this tends to come predominately from countries within regional trading blocs. This suggests that action at this regional level will contain the competitiveness impact.\n* Trade diversion and relocation are less likely, the stronger the expectation of eventual global action as firms take long-term decisions when investing in plant and equipment that will produce for decades.\n* International sectoral agreements for ~GHG-intensive industries could play an important role in promoting international action for keeping down competitiveness impacts for individual countries.\n* Even where industries are internationally mobile, environmental policies are only one determinant of plant and production location decisions. Other factors such as the quality of the capital stock and workforce, access to technologies, infrastructure and proximity to markets are usually more important determinants of industrial location and trade than pollution restrictions.\n''Contents of Chapter 11\n<<<\n''11.1 Introduction''\n''11.2 Distribution of costs and implications for competitiveness''\n''11.3 Carbon mitigation policies and industrial location''\n''11.4 Conclusion''\n''11.5 References''\n<<<\n----\nDownload pdf version of Chapter 11\nhttp://www.climate-change-two.net/stern-review/chapter-11.pdf 16pp. (386 Kb)
!Opportunities and wider benefits from climate policies\n!!Key Messages\n* The transition to a low-emissions global economy will open many new opportunities across a wide range of industries and services. Markets for low-carbon energy products are likely to be worth at least $500bn per year by 2050, and perhaps much more. Individual companies and countries should position themselves to take advantage of these opportunities.\n* Financial markets also face big opportunities to develop new trading and financial instruments across a broad range including carbon trading, financing clean energy, greater energy efficiency, and insurance.\n* Climate change policy can help to root out existing inefficiencies. At the company level, implementing climate policies can draw attention to money-saving opportunities. At the economy-wide level, climate change policy can be a lever for reforming inefficient energy systems and removing distorting energy subsidies on which governments spend around $250bn a year.\n* Policies on climate change can also help to achieve other objectives, including enhanced energy security and environmental protection. These co-benefits can significantly reduce the overall cost to the economy of reducing greenhouse gas emissions. There may be tensions between climate change mitigation and other objectives, which need to be handled carefully, but as long as policies are well designed, the co-benefits will be more significant than the conflicts.\n''Contents of Chapter 12\n<<<\n''12.1 Introduction''\n''12.2 Opportunities from growing markets''\n''12.3 Climate change policy as a spur to efficiency and productivity''\n''12.4 The links between climate change policy and other energy policy goals''\n''12.5 The role of pricing and regulatory reforms in the energy markets''\n''12.6 Climate change mitigation and environmental protection''\n''12.7 Conclusion''\n''12.8 References''\n<<<\n----\nDownload pdf version of Chapter 12\nhttp://www.climate-change-two.net/stern-review/chapter-12.pdf 15pp. (353 Kb)
!Towards a goal for climate-change policy\n!!Key Messages\n* Reducing the expected adverse impacts of climate change is both highly desirable and feasible. The need for strong action can be demonstrated in three ways:\n** by comparing disaggregated estimates of the damages from climate change with the costs of specific mitigation strategies,\n** by using models that take some account of interactions in the climate system and the global economy, and\n** by comparing the marginal costs of abatement with the social cost of carbon.\n* The science and economics both suggest that a shared international understanding of the desired goals of climate-change policy would be a valuable foundation for action. Among these goals, aiming for a particular target range for the ultimate concentration of greenhouse gases (GHGs) in the atmosphere would provide an understandable and useful guide to policy-makers. It would also help policy-makers and interested parties at all levels to monitor the effectiveness of action and, crucially, anchor a global price for carbon. Any long-term goal would need to be kept under review and adjusted as scientific and economic understanding developed.\n* However, the first key decision, to be taken as soon as possible, is that strong action is indeed necessary and urgent. This does not require immediate agreement on a precise stabilisation goal. But it does require agreement on the importance of starting to take steps in the right direction while the shared understanding is being developed.\n* Measuring and comparing the expected benefits and costs over time of different potential policy goals can provide guidance to help decide how much to do and how quickly. Given the nature of current uncertainties explored in this Review, and the ethical issues involved, analysis can only suggest a range for action.\n* The current evidence suggests aiming for stabilisation somewhere within the range 450 - 550ppm CO~~2~~e. Anything higher would substantially increase risks of very harmful impacts but would only reduce the expected costs of mitigation by comparatively little. Anything lower would impose very high adjustment costs in the near term for relatively small gains and might not even be feasible, not least because of past delays in taking strong action.\n* For similar reasons, weak action over the next 20 to 30 years, by which time GHG concentrations could already be around 500ppm CO~~2~~e, would make it very costly or even impossible to stabilise at 550ppm CO~~2~~e. There is a high price to delay. Delay in taking action on climate change would lead both to more climate change and, ultimately, higher mitigation costs.\n* Uncertainty is an argument for a more, not less, demanding goal, because of the size of the adverse climate-change impacts in the worse-case scenarios.\n* Policy should be more ambitious, the more societies dislike bearing risks, the more they are concerned about climate-change impacts hitting poorer people harder, the more optimistic they are about technology opportunities, and the less they discount future generations' welfare purely because they live later. The choice of objective will also depend on judgements about political feasibility. These are decisions with such globally significant implications that they will rightly be the subject of a broad public debate at a national and international level.\n* The ultimate concentration of greenhouse gases anchors the trajectory for the social cost of carbon. The social cost of carbon is likely to increase steadily over time, in line with the expected rising costs of climate-change-induced damage. Policy should therefore ensure that abatement efforts at the margin also intensify over time. But policy-makers should also spur on the development of technology that can drive down the average costs of abatement.\n* The social cost of carbon will be lower at any given time with sensible climate-change policies and efficient low-carbon technologies than under 'business as usual'.\n* Even if all emissions stopped tomorrow, the accumulated momentum behind climate change would ensure that global mean temperatures would still continue to rise over the next 30 to 50 years.\n* Thus adaptation is the only means to reduce the now-unavoidable costs of climate change over the next few decades. But adaptation also entails costs, and cannot cancel out all the effects of climate change. Adaptation must go hand in hand with mitigation because, otherwise, the pace and scale of climate change will pose insurmountable barriers to the effectiveness of adaptation.\n''Contents of Chapter 13\n<<<\n''13.1 Introduction''\n''13.2 The need for strong and urgent action''\n''13.3 Setting objectives for action''\n''13.4 The economics of choosing a goal for global action''\n''13.5 Climate-change impacts and the stabilisation level''\n''13.6 The costs of mitigation and the stabilisation level''\n''13.7 A range for the stabilisation objective''\n''13.8 Implications for emissions reductions and atmospheric concentrations''\n''13.9 The social cost of carbon''\n''13.10 The role of adaptation''\n''13.11 Conclusions''\n''13.12 References''\n<<<\n----\nDownload pdf version of Chapter 13\nhttp://www.climate-change-two.net/stern-review/chapter-13.pdf 24pp. (384 Kb)
!Harnessing markets for mitigation - the role of taxation and trading\n!!Key Messages\n* Agreeing a quantitative global stabilisation target range for the stock of greenhouse gases (GHGs) in the atmosphere is an important and useful foundation for overall policy. It is an efficient way to control the risk of catastrophic climate change in the long term. Short term policies to achieve emissions reductions will need to be consistent with this long-term stabilisation goal.\n* In the short term, using price-driven instruments (through tax or trading) will allow flexibility in how, where and when emission reductions are made, providing opportunities and incentives to keep down the cost of mitigation. The price signal should reflect the marginal damage caused by emissions, and rise over time to reflect the increasing damages as the stock of GHGs grows. For efficiency, it should be common across sectors and countries.\n* In theory, taxes or tradable quotas could establish this common price signal across countries and sectors. There can also be a role for regulation in setting an implicit price where market-based mechanisms alone prove ineffective. In practice, tradable quota systems - such as the EU's emissions-trading scheme - may be the most straightforward way of establishing a common price signal across countries. To promote cost-effectiveness, they also need flexibility in the timing of emissions reductions.\n* Both taxes and tradable quotas have the potential to raise public revenues. In the case of tradable quotas, this will occur only if some firms pay for allowances (through an auction or sale). Over time, there are good economic reasons for moving towards greater use of auctioning, though the transition must be carefully managed to ensure a robust revenue base.\n* The global distributional impact of climate-change policy is also critical. Issues of equity are likely to be central to securing agreement on the way forward. Under the existing Kyoto protocol, participating developed countries have agreed binding commitments to reduce emissions. Within such a system, company-level trading schemes such as the EU ETS, which allow emission reductions to be made in the most cost-effective location - either within the EU, or elsewhere - can then drive financial flows between countries and promote, in an equitable way, accelerated mitigation in developing countries.\n* At the national - or regional - level, governments will want to choose a policy framework that is suited to their specific circumstances. Tax policy, tradable quotas and regulation can all play a role. In practice, some administrations are likely to place greater emphasis on trading, others on taxation and possibly some on regulation.\n''Contents of Chapter 14\n<<<\n''14.1 Introduction''\n''14.2 Designing policy to reduce the impact of the greenhouse-gas externality''\n''14.3 Delivering carbon reductions efficiently''\n''14.4 Efficiency under uncertainty - the implications for climate-change policy''\n''14.5 Setting short term policies to meet the long term goal''\n''14.6 The interaction between carbon pricing and fossil fuel''\n''14.7 Public finance issues''\n''14.8 Co-ordinating action across countries''\n''14.9 The performance of taxation and trading against principles of efficiency, equity and public finance considerations''\n''14.10 Conclusion - building policies for the future''\n''14.11 References''\n<<<\n----\nDownload pdf version of Chapter 14\nhttp://www.climate-change-two.net/stern-review/chapter-14.pdf 15pp. (857 Kb)
!Carbon pricing and emissions markets in practice\n!!Key Messages\n* Both tax and trading can be used to create an explicit price for carbon; and regulation can create an implicit price.\n* For all these instruments, credibility, flexibility and predictability are vital to effective policy design.\n* A lack of credible policy may undermine the effectiveness of carbon pricing, as well as creating uncertainties for firms considering large, long-term investments.\n* To establish the credibility of carbon pricing globally will take time. During the transition period, governments should consider how to deal with investments in long-lived assets which risk locking economies into a high-carbon trajectory.\n* To reap the benefits of emissions trading, deep and liquid markets and well designed rules are important. Broadening the scope of schemes will tend to lower costs and reduce volatility. Increasing the use of auctioning is likely to have benefits for efficiency, distribution and potentially the public finances.\n* Decisions made now on the third phase of the EU Emissions Trading Scheme pose an opportunity for the scheme to influence, and be the nucleus of, future global carbon markets.\n* The establishment of common incentives across different sectors is important for efficiency. The overall structure of incentives, however, will reflect other market failures and complexities within the sectors concerned, as well as the climate change externality.\n* The characteristics of different sectors will influence the design and choice of policy tool. Transaction costs of a trading scheme, for instance, will tend to be higher in sectors where there are many emission sources. The existing framework of national policies in these sectors will be an important influence on policy choice.\n''Contents of Chapter 15\n<<<\n''15.1 Introduction''\n''15.2 Carbon pricing and investment decisions''\n''15.3 Experience in emissions trading''\n''15.4 Designing efficient and well-functioning emissions trading schemes''\n''15.5 Carbon pricing across sectors of the economy''\n''15.6 Conclusions''\n''15.7 References''\n<<<\n----\nDownload pdf version of Chapter 15\nhttp://www.climate-change-two.net/stern-review/chapter-15.pdf 23pp. (536 Kb)
!Accelerating technological innovation\n!!Key Messages\n* Effective action on the scale required to tackle climate change requires a widespread shift to new or improved technology in key sectors such as power generation, transport and energy use. Technological progress can also help reduce emissions from agriculture and other sources and improve adaptation capacity.\n* The private sector plays the major role in R&D and technology diffusion. But closer collaboration between government and industry will further stimulate the development of a broad portfolio of low carbon technologies and reduce costs. Co-operation can also help overcome longer-term problems, such as the need for energy storage systems, for both stationary applications and transport, to enable the market shares of low-carbon supply technologies to be increased substantially.\n* Carbon pricing alone will not be sufficient to reduce emissions on the scale and pace required as:\n** Future pricing policies of governments and international agreements should be made as credible as possible but cannot be 100% credible.\n** The uncertainties and risks both of climate change, and the development and deployment of the technologies to address it, are of such scale and urgency that the economics of risk points to policies to support the development and use of a portfolio of low-carbon technology options.\n** The positive externalities of efforts to develop them will be appreciable, and the time periods and uncertainties are such that there can be major difficulties in financing through capital markets.\n* Governments can help foster change in industry and the research community through a range of instruments:\n** Carbon pricing, through carbon taxes, tradable carbon permits, carbon contracts and/or implicitly through regulation will itself directly support the research for new ways to reduce emissions;\n** Raising the level of support for R&D and demonstration projects, both in public research institutions and the private sector;\n** Support for early stage commercialisation investments in some sectors.\n* Such policies should be complemented by tackling institutional and other non-market barriers to the deployment of new technologies.\n* These issues will vary across sectors with some, such as electricity generation and transport, requiring more attention than others.\n* Governments are already using a combination of market-based incentives, regulations and standards to develop new technologies. These efforts should increase in the coming decades.\n* Our modelling suggests that, in addition to a carbon price, deployment incentives for lowemission technologies should increase two to five times globally from current levels of around $34 billion.\n* Global public energy R&D funding should double, to around $20 billion, for the development of a diverse portfolio of technologies.\n''Contents of Chapter 16\n<<<\n''16.1 Introduction''\n''16.2 The innovation process''\n''16.3 Innovation for low-emission technologies''\n''16.4 Policy implications for climate change technologies''\n''16.5 Research, development and demonstration policies''\n''16.6 Deployment policy''\n''16.7 Other supporting policies''\n''16.8 The scale of action required''\n''16.9 Conclusions''\n''16.10 References''\n<<<\n----\nDownload pdf version of Chapter 16\nhttp://www.climate-change-two.net/stern-review/chapter-16.pdf 30pp. (317 Kb)
!Beyond carbon markets and technology\n!!Key Messages\n* Policies to price greenhouse gases, and support technology development, are fundamental to tackling climate change. However, even if these measures are taken, barriers and market imperfections may still inhibit action, particularly on energy efficiency.\n* These barriers and failures include hidden and transaction costs such as the cost of the time needed to plan new investments; lack of information about available options; capital constraints; misaligned incentives; as well as behavioural and organisational factors affecting economic rationality in decision-making.\n* These market imperfections result in significant obstacles to the uptake of cost-effective mitigation, and weakened drivers for innovation, particularly in markets for energy efficiency measures.\n* Policy responses which can help to overcome these barriers in markets affecting demand for energy include:\n** Regulation: Regulation has an important role, for example in product and building markets by: communicating policy intentions to global audiences; reducing uncertainty, complexity and transaction costs; inducing technological innovation; and avoiding technology lock-in, for example where the credibility of carbon markets is still being established.\n** Information: Policies to promote: performance labels, certificates and endorsements; more informative energy bills; wider adoption of energy use displays and meters; the dissemination of best practice; or wider carbon disclosure help consumers and firms make sounder decisions and stimulate more competitive markets for more energy efficient goods and services.\n** Financing: Private investment is key to raising energy efficiency. Generally, policy should seek to tax negative externalities rather than subsidise preferable outcomes, and address the source of market failures and barriers. Investment in public sector energy conservation can reduce emissions, improve public services, fostering innovation and change across the supply chain and set an example to wider society.\n* Careful appraisal, design, implementation and management helps minimise the cost and increase the effectiveness of regulatory, information and financing measures. Energy contracting can reduce the costs of raising efficiency through economies of scale and specialisation.\n* Fostering a shared understanding of the nature and consequences of climate change and its solutions is critical both in shaping behaviour and preferences, particularly in relation to their housing, transport and food consumption decisions, and in underpinning national and international political action and commitment.\n* Governments cannot force this understanding, but can be a catalyst for dialogue through evidence, education, persuasion and discussion. And governments, businesses and individuals can all help to promote action through demonstrating leadership.\n''Contents of Chapter 17\n<<<\n''17.1 Introduction''\n''17.2 Market Failures and Responses to Incentives''\n''17.3 Policy responses: Regulation and Standards, Direct Controls''\n''17.4 Policy Responses: Information policy''\n''17.5 Policy responses: Financing Mitigation''\n''17.6 Policy Delivery''\n''17.7 Building a shared concept of responsible behaviour''\n''17.8 Conclusion''\n''17.9 References''\n<<<\n----\nDownload pdf version of Chapter 17\nhttp://www.climate-change-two.net/stern-review/chapter-17.pdf 26pp. (317 Kb)
!Understanding the economics of adaptation\n!!Key Messages\n* Adaptation is crucial to deal with the unavoidable impacts of climate change to which the world is already committed. It will be especially important in developing countries that will be hit hardest and soonest by climate change.\n* Adaptation can mute the impacts, but cannot by itself solve the problem of climate change.\n* Adaptation will be important to limit the negative impacts of climate change. However, even with adaptation there will be residual costs. For example, if farmers switch to more climate resistant but lower yielding crops.\n* There are limits to what adaptation can achieve. As the magnitude and speed of unabated climate change increase, the relative effectiveness of adaptation will diminish. In natural systems, there are clear limits to the speed with which species and ecosystems can migrate or adjust. For human societies, there are also limits - for example, if sea level rise leaves some nation states uninhabitable.\n* Without strong and early mitigation, the physical limits to - and costs of - adaptation will grow rapidly. This will be especially so in developing countries, and underlines the need to press ahead with mitigation.\n* Adaptation will in most cases provide local benefits, realised without long lag times, in contrast to mitigation. Therefore some adaptation will occur autonomously, as individuals respond to market or environmental changes. Much will take place at the local level. Autonomous adaptation may also prove very costly for the poorest in society.\n* But adaptation is complex and many constraints have to be overcome. Governments have a role to play in making adaptation happen, starting now, providing both policy guidelines and economic and institutional support to the private sector and civil society. Other aspects of adaptation, such as major infrastructure decisions, will require greater foresight and planning, while some, such as knowledge and technology, will be of global benefit.\n* Studies in climate-sensitive sectors point to many adaptation options that will provide benefits in excess of cost. But quantitative information on the costs and benefits of economy-wide adaptation is currently limited.\n''Contents of Chapter 18\n<<<\n''18.1 Role of adaptation''\n''18.2 Adaptation perspectives''\n''18.3 Barriers and limits to adaptation''\n''18.4 Conclusions''\n''18.5 References''\n<<<\n----\nDownload pdf version of Chapter 18\nhttp://www.climate-change-two.net/stern-review/chapter-18.pdf 12pp. (186 Kb)
!Adaptation in the developed world\n!!Key Messages\n* In developed countries, adaptation will be required to reduce the costs and disruption caused by climate change, particularly from extreme weather events like storms, floods and heatwaves.\n* Adaptation will also help take advantage of any opportunities, such as development of new crops or increased tourism potential. But at higher temperatures, the costs of adaptation will rise sharply and the residual damages remain large. The additional costs of making new infrastructure and buildings more resilient to climate change in OECD countries could range from $15-150 billion each year (0.05-0.5% of GDP), with higher costs possible with the prospect of higher temperatures in the future.\n* Markets that respond to climate information will stimulate adaptation amongst individuals and firms. Risk-based insurance schemes, for example, provide strong signals about the size of climate risks and encourage better risk management.\n* In developed countries, progress on adaptation is still at an early stage, even though market structures are well developed and the capacity to adapt is relatively high. Market forces alone are unlikely to deliver the full response necessary to deal with the serious risks from climate change.\n* Government has a role in providing a clear policy framework to guide effective adaptation by individuals and firms in the medium and longer term. There are four key areas:\n** High-quality climate information will help drive efficient markets. Improved regional climate predictions will be critical, particularly for rainfall and storm patterns.\n** Land-use planning and performance standards should encourage both private and public investment in buildings, long-lived capital and infrastructure to take account of climate change.\n** Government can contribute through long-term polices for climate-sensitive public goods, such as natural resources protection, coastal protection, and emergency preparedness.\n** A financial safety net may be required to help the poorest in society who are most vulnerable and least able to afford protection (including insurance).\n''Contents of Chapter 19\n<<<\n''19.1 Introduction''\n''19.2 Adaptation costs and prospects in the developed world''\n''19.3 Providing information and tools''\n''19.4 Is there a role for regulation in overcoming market barriers to adaptation?''\n''19.5 Incorporating climate change into long-term policies for public and publicly provided goods''\n''19.6 Spreading risk and protecting the vulnerable''\n''19.7 Conclusion''\n''19.8 References''\n<<<\n----\nDownload pdf version of Chapter 19\nhttp://www.climate-change-two.net/stern-review/chapter-19.pdf 14pp. (210 Kb)
!Economics, ethics and climate change\n!!Key Messages\n* Climate change is a result of the externality associated with greenhouse-gas emissions - it entails costs that are not paid for by those who create the emissions.\n* It has a number of features that together distinguish it from other externalities:\n** It is global in its causes and consequences;\n** The impacts of climate change are long-term and persistent;\n** Uncertainties and risks in the economic impacts are pervasive.\n** There is a serious risk of major, irreversible change with non-marginal economic effects.\n* These features shape the economic analysis: it must be global, deal with long time horizons, have the economics of risk and uncertainty at its core, and examine the possibility of major, non-marginal changes.\n* The impacts of climate change are very broad ranging and interact with other market failures and economic dynamics, giving rise to many complex policy problems. Ideas and techniques from most of the important areas of economics have to be deployed to analyse them, including many recent advances.\n* The breadth, magnitude and nature of impacts imply that several ethical perspectives, such as those focusing on welfare, equity and justice, freedoms and rights, are relevant. Most of these perspectives imply that the outcomes of climate-change policy are to be understood in terms of impacts on consumption, health, education and the environment over time but different ethical perspectives may point to different policy recommendations.\n* Questions of intra- and inter-generational equity are central. Climate change will have serious impacts within the lifetime of most of those alive today. Future generations will be even more strongly affected, yet they lack representation in present-day decisions.\n* Standard externality and cost-benefit approaches have their usefulness for analysing climate change, but, as they are methods focused on evaluating marginal changes, and generally abstract from dynamics and risk, they can only be starting points for further work.\n* Standard treatments of discounting are valuable for analysing marginal projects but are inappropriate for non-marginal comparisons of paths; the approach to discounting must meet the challenge of assessing and comparing paths that have very different trajectories and involve very long-term and large inter-generational impacts. We must go back to the first principles from which the standard marginal results are derived.\n* The severity of the likely consequences and the application of the above analytical approaches form the basis of powerful arguments, developed in the Review, in favour of strong and urgent global action to reduce greenhouse-gas emissions, and of major action to adapt to the consequences that now cannot be avoided.\n''Contents of Chapter 2\n<<<\n''2.1 Introduction''\n''2.2 Understanding the market failures that lead to climate change''\n''2.3 Ethics, welfare and economic policy''\n''2.4 The long-run impacts of climate change: evaluation over time and discounting''\n''2.5 Risk and Uncertainty''\n''2.6 Non-marginal policy decisions''\n''2.7 The public policy of promoting mitigation''\n''2.8 International action for mitigation and adaptation''\n''2.9 Conclusions''\n''2.10 References''\n<<<\n----\nDownload pdf version of Chapter 2\nhttp://www.climate-change-two.net/stern-review/chapter-02.pdf 18pp. (386 Kb)\nChapter 2: Annex A: Ethical frameworks and intertemporal equity 14pp. (371 Kb)\nhttp://www.climate-change-two.net/stern-review/annex-2a.pdf
!Adaptation in the developing world\n!!Key Messages\n* Adaptation to mute the impact of climate change will be essential in the poorer parts of the world. The poorest countries will be especially hard hit by climate change, with millions potentially pushed deeper into poverty.\n* Development itself is key to adaptation. Much adaptation should be an extension of good development practice and reduce vulnerability by:\n** Promoting growth and diversification of economic activity;\n** Investing in health and education;\n** Enhancing resilience to disasters and improving disaster management;\n** Promoting risk-pooling, including social safety nets for the poorest.\n* Putting the right policy frameworks in place will encourage and facilitate effective adaptation by households, communities and firms. Poverty and development constraints will present obstacles to adaptation but focused development policies can reduce these obstacles.\n* Adaptation actions should be integrated into development policy and planning at every level. This will incur incremental adaptation costs relative to plans that ignore climate change.\n* But ignoring climate change is not a viable option - inaction will be far more costly than adaptation.\n* Adaptation costs are hard to estimate, because of uncertainty about the precise impacts of climate change and its multiple effects. But they are likely to run into tens of billions of dollars. This makes is still more important for developed countries to honour both their existing commitments to increase aid sharply and help the world's poorest countries adapt to climate change. More work is needed to determine the costs of adaptation.\n* Without global action to mitigate climate change, both the impacts and adaptation costs will be much larger, and so will be the need for richer countries to help the poorer and most exposed countries. The costs of climate change can be reduced through both adaptation and mitigation, but adaptation is the only way to cope with impacts of climate change over the next few decades.\n''Contents of Chapter 20\n<<<\n''20.1 Introduction''\n''20.2 Adaptation prospects in the developing world''\n''20.3 The foundations of the policy response: building on good development practice''\n''20.4 New policies focused on climate change''\n''20.5 Adaptation costs in the developing world''\n''20.6 International assistance for adaptation''\n''20.7 Conclusion''\n''20.8 References''\n<<<\n----\nDownload pdf version of Chapter 20\nhttp://www.climate-change-two.net/stern-review/chapter-20.pdf 19pp. (453 Kb)
!Framework for understanding international collective action for climate change\n!!Key Messages\n* Climate change mitigation raises the classic problem of the provision of a global public good. It shares some key characteristics with other environmental challenges that require the international management of common resources to avoid free riding.\n* International collective action is already taking place in a wide variety of forms, including multilateral, coordinated and parallel approaches.\n** Multilateral frameworks such as the UNFCCC and Kyoto Protocol provide an essential foundation to build further co-operation.\n** Partnerships, networks and organisations such as the International Energy Agency facilitate coordinated international action.\n** Mutual understanding of domestic policy goals supports further action: the EU, China, and California are amongst those that have adopted strong mandatory initiatives that will reduce the growth of greenhouse gas emissions.\n* Stronger, more coordinated action is required to stabilise concentrations of greenhouse gases in the atmosphere. Successful efforts in many areas, including the protection of the ozone layer, have demonstrated that international co-operation can overcome issues of free riding. Insights from game theory help to inform the design of frameworks for international action.\n* Countries usually honour international commitments where they conform to shared notions of responsible behaviour, even through international law provides weak tools to enforce co-operation. Existing multilateral frameworks can be enhanced by creating a shared understanding of long-term goals and responsible behaviour.\n* The transparency and comparability of national action across a range of dimensions of effort are key to mutual understanding and recognition of what others are doing, as well as ensuring public accountability. Enhancing them will require a strong response from existing multilateral institutions, including those with expertise in monitoring economic policy.\n* Widespread public understanding of the climate change problem and support for action is growing rapidly. Public awareness and support is crucial for encouraging and sustaining co-operation.\n''Contents of Chapter 21\n<<<\n''21.1 Introduction''\n''21.2 Understanding international collective action''\n''21.3 Existing international arrangements for co-operation on climate change''\n''21.4 Building and sustaining coordinated global action on climate change''\n''21.5 Conclusions''\n''21.6 References''\n<<<\n----\nDownload pdf version of Chapter 21\nhttp://www.climate-change-two.net/stern-review/chapter-21.pdf 18pp. (214 Kb)
!Creating a global price for carbon\n!!Key Messages\n* A shared understanding of long-term goals must be at the centre of international frameworks to support large reductions in greenhouse gas emissions reductions around the world.\n* A broadly similar price of carbon is necessary to keep down the overall costs of making these reductions, and can be created through tax, trading or regulation. Creating a transparent and comparable carbon price signal around the world is an urgent challenge for international collective action.\n* Securing broad-based and sustained co-operation requires an equitable distribution of effort across both developed and developing countries. There is no single formula that captures all dimensions of equity, but calculations based on income, per capita emissions and historic responsibility all point to developed countries taking responsibility for emissions reductions of at least 60% from 1990 levels by 2050.\n* The Kyoto Protocol has established valuable institutions to underpin international emissions trading. There are strong reasons to build on and learn from this approach. There are also opportunities to use the UNFCCC dialogue and the review of the effectiveness of the Kyoto Protocol to explore ways to improve.\n* Private sector trading schemes are now at the heart of international flows of carbon finance. Linking and expanding regional and sectoral emissions trading schemes, including subnational and voluntary schemes, requires greater international co-operation and the development of appropriate new institutional arrangements.\n* Common but differentiated responsibilities should be reflected in future international frameworks, including through a greater range of commitments and multi-stage approaches.\n* Carbon pricing and other measures should be extended to international aviation and shipping.\n''Contents of Chapter 22\n<<<\n''22.1 Introduction''\n''22.2 Reducing the costs of mitigation through an efficient international framework''\n''22.3 Sharing the costs of mitigation''\n''22.4 Putting efficiency and equity together: The experience of Kyoto''\n''22.5 Building on national, regional and sectoral carbon markets''\n''22.6 Building on common but differentiated responsibilities''\n''22.7 Challenges of extending international co-operation to aviation and shipping''\n''22.8 Interactions with the international trade regime''\n''22.9 Conclusions''\n''22.10 References''\n<<<\n----\nDownload pdf version of Chapter 22\nhttp://www.climate-change-two.net/stern-review/chapter-22.pdf 23pp. (497 Kb)
!Supporting the transition to a low-carbon global economy\n!!Key Messages\n* Demand for energy and transportation is growing rapidly in many developing countries.\n* The investment that takes place in the next 10-20 years could lock in very high emissions for the next half-century, or present an opportunity to move the world onto a more sustainable path.\n* Investment in energy efficiency can reduce demand growth, and low-carbon technologies can further reduce the impact on climate change.\n* The transfer of technologies to developing countries by the private sector can be accelerated through national action and international co-operation.\n* Energy price and taxation reform will play an important role in improving the conditions for investment in more efficient and low-carbon technologies, as they can support other development priorities and encourage co-benefits from mitigation policies, including energy security and improved air quality.\n* Carbon pricing is essential to influence investment decisions in low-carbon technologies, including renewable energy and carbon capture and storage. The Clean Development Mechanism is currently the main formal channel for supporting low-carbon investment in developing countries, but in its existing form it has significant limitations.\n* The incremental costs of low-carbon investments in developing countries are likely to be at least $20-30 billion per year.\n* A transformation in the scale of and incentives for international carbon finance flows is required to support cost-effective reductions. This will require mechanisms that link carbon finance to policies and programmes rather than to individual projects, working within a context of national, regional or sectoral objectives for emissions reductions.\n* Long-term goals and early signals to provide continuity of carbon finance after 2012 are essential to deliver emissions reductions in developing countries.\n* There are opportunities now to build trust and to pilot new approaches to creating largescale flows for investment in low-carbon development paths. The International Financial Institutions have an important role to play in accelerating this process, including through the creation of the Clean Energy Investment Framework.\n* The reduction of tariff and non-tariff barriers for low-carbon goods and services, including within the Doha Development Round of international trade negotiations, could provide further opportunities to accelerate the diffusion of key technologies.\n''Contents of Chapter 23\n<<<\n''23.1 Introduction''\n''23.2 Understanding the context for energy sector investment''\n''23.3 Improving the enabling environment for investment''\n''23.4 Accelerating technology transfer to developing countries''\n''23.5 International financial flows for energy efficient and low-carbon investment''\n''23.6 Developing an integrated approach to enhance investment in developing countries''\n''23.7 Enhancing trade in low-carbon goods and services''\n''23.8 Conclusions''\n''23.9 References''\n<<<\n----\nDownload pdf version of Chapter 23\nhttp://www.climate-change-two.net/stern-review/chapter-23.pdf 23pp. (262 Kb)
!Promoting effective international technology co-operation\n!!Key Messages\n* The private sector is the major driver of innovation and the diffusion of technologies around the world. But governments can help to promote international collaboration to overcome barriers to technology development. Technology co-operation enables the sharing of risks, rewards and progress of technology development and enables co-ordination of priorities.\n* Mutual recognition of the value contributed by country's investments in new technologies and innovation could usefully be built into international commitments.\n* International R&D co-operation can take many forms. Coherent, urgent and broadly based action requires international understanding and co-operation, embodied in a range of formal multilateral agreements and informal arrangements. Co-operation can focus on:\n** Sharing knowledge and information, including between developed and developing countries\n** Co-ordinating R&D priorities in different national programmes\n** Pooling risk and reward for major investments in R&D, including demonstration projects A global portfolio that emerges from individual national R&D priorities and deployment support may not be sufficiently diverse, and is likely to place too little weight on some technologies with global potential, such as biomass. International discussion and coordination of priorities for investment in R&D and early stage deployment could play an important role in developing a broadly-based portfolio of cost-effective abatement options.\n* A small number of technologies, including solar PV, CCS, bio-energy and hydrogen have been identified in international assessments as having significant global potential. Dedicated international programmes could play a role in accelerating R&D in these areas.\n* Both informal and formal co-ordination of deployment support can boost cost reductions by increasing the scale of new markets across borders. Transparency and information sharing have supported informal co-operation on renewable energy. Tradable deployment instruments could increase the effectiveness of support and allow greater coordination across borders. There is a strong case for greater international co-ordination of programmes to demonstrate carbon capture and storage technologies, and for international agreement on deployment.\n* International co-ordination of regulations and product standards can be a powerful way to encourage greater energy efficiency. It can raise their cost effectiveness, strengthen the incentives to innovate, improve transparency, and promote international trade.\n''Contents of Chapter 24\n<<<\n''24.1 Introduction''\n''24.2 The role of international technology co-operation''\n''24.3 Models for R&D co-operation''\n''24.4 Co-ordinating deployment support''\n''24.5 The use of international public-private co-operation to support''\n''24.6 International co-ordination of performance standards, labels and endorsements''\n''24.7 Conclusions''\n''24.8 References''\n<<<\n----\nDownload pdf version of Chapter 24\nhttp://www.climate-change-two.net/stern-review/chapter-24.pdf 21pp. (227 Kb)
!Reversing emissions from land use change\n!!Key Messages\n* Curbing deforestation is a highly cost-effective way of reducing greenhouse gas emissions and has the potential to offer significant reductions fairly quickly. It also helps preserve biodiversity and protect soil and water quality. Encouraging new forests, and enhancing the potential of soils to store carbon, offer further opportunities to reverse emissions from land use change.\n* Policies on deforestation should be shaped and led by the nation where the forests stand but there should be strong help from the international community, which benefits from their actions.\n* At a national level, establishing and enforcing clear property rights to forestland, and determining the rights and responsibilities of landowners, communities and loggers, is key to effective forest management. This should involve local communities, and take account of their interests and social structures, work with development goals and reinforce the process of protecting the forests.\n* Compensation from the international community should be provided and take account of the opportunity costs of alternative uses of the land, the costs of administering and enforcing protection, and managing the transition. Research carried out for this report indicates that the opportunity cost of forest protection in 8 countries responsible for 70 per cent of emissions from land use could be around $5 billion annually, initially, although over time marginal costs would rise.\n* Carbon markets could play an important role in providing such incentives in the longer term. But there are short-term risks of de-stabilising the crucial process of building strong carbon markets if deforestation is integrated without agreements that increase demand for emissions reductions, and an understanding of the scale of transfers likely to be involved.\n* Action to preserve the remaining areas of natural forest is urgent. Large-scale pilot schemes are required to explore effective approaches to combining national action and international support.\n''Contents of Chapter 25\n<<<\n''25.1 Introduction''\n''25.2 Understanding deforestation''\n''25.3 Changing economic incentives to reduce deforestation''\n''25.4 Project-based approaches to increasing carbon storage in land use''\n''25.5 International support for avoided deforestation''\n''25.6 References''\n<<<\n----\nDownload pdf version of Chapter 25\nhttp://www.climate-change-two.net/stern-review/chapter-25.pdf 17pp. (562 Kb)
!International support for adaptation\n!!Key Messages\n* Adaptation efforts in developing countries must be accelerated. Adaptation is essential to manage the impacts of climate change that have already been locked into the climate system.\n* The poorest developing countries will be hit earliest and hardest by climate change, even though they have contributed little to causing the problem. The international community should support them in adapting to climate change. Without such support there are serious risks that development progress will be undermined.\n* Transfers to developing-country governments and civil society will be necessary to support adaptation. Additional costs to developing countries of adapting to climate change could run into tens of billions of dollars. Donors and multilateral development institutions should mainstream and support adaptation across their assistance to developing countries.\n* Public-private partnerships for climate-related insurance can help to support adaptation. At the household level, remittances are likely to have an important role in supporting autonomous adaptation.\n* The international community should also support adaptation through investment in global public goods, including:\n** Improved monitoring and prediction of climate change;\n** The development and deployment of drought- and flood-resistant crops;\n** Methods to combat land degradation;\n** Better modelling of impacts.\n* In addition, efforts should be increased to improve mechanisms for improving risk management and preparedness, disaster response and refugee resettlement.\n* The scale of the challenge makes it more urgent than ever for developed countries to honour their existing commitments - made in Monterrey 2002, and strengthened at the EU in June 2005 and at the G8 Gleneagles meeting in July 2005 - to double aid flows by 2010. Strong growth and development will enhance countries' ability to adapt.\n* Strong and early mitigation has a key role to play in limiting the long-run costs of adaptation. Without this, the costs of adaptation will rise dramatically.\n''Contents of Chapter 26\n<<<\n''26.1 Introduction''\n''26.2 International assistance for adaptation''\n''26.3 The role of international private financing for adaptation''\n''26.4 Global public goods''\n''26.5 Risk management and risk preparedness: responding to disasters and resettling''\n''26.6 Conclusion''\n''26.7 References''\n<<<\n----\nDownload pdf version of Chapter 26\nhttp://www.climate-change-two.net/stern-review/chapter-26.pdf 18pp. (330 Kb)
!Conclusions: building and sustaining international co-operation on climate change\n!!Key Messages\n* Very strong reductions in carbon emissions are required to reduce the risks of climate change. They are likely to provide benefits well in excess of the costs.\n* Indeed the costs of not acting strongly are likely to be very high.\n* Action is urgent since stocks of GHGs are rapidly approaching dangerous levels, there will be heavy investment in energy infrastructure that could lock in future emissions, and it will take time to develop technologies that deliver zero emissions at low cost.\n* Without a clear perspective on the long-term goals for stabilisation of greenhouse gas concentrations in the atmosphere, it is unlikely that action will be sufficient to meet the objective.\n* Action must include mitigation, innovation and adaptation, and there are many opportunities to start now, including where there are immediate benefits and where large-scale pilot programmes will generate valuable experience\n* Countries should agree a broad set of mutual responsibilities to contribute to the overall goal of reducing the risks of climate change. These responsibilities should take account of costs and the ability to bear them, as well as starting points, prospects for growth and past histories.\n* The challenge now is to broaden and deepen participation across all the relevant dimensions of action - including co-operation to create carbon prices and markets, to accelerate innovation and deployment of low-carbon technologies, to reverse emissions from land-use change and to help poor countries adapt to the worst impacts of climate change.\n''Contents of Chapter 27\n<<<\n''27.1 Introduction''\n''27.2 Developing a shared understanding of the long-term goals for climate policy''\n''27.3 Building the institutions for effective co-operation''\n''27.4 Creating the conditions for collective action''\n''27.5 Conclusions''\n''27.6 References''\n<<<\n----\nDownload pdf version of Chapter 27\nhttp://www.climate-change-two.net/stern-review/chapter-27.pdf 4pp. (90 Kb)
!Ethical frameworks and intertemporal equity\n\n''Contents of Chapter 2: Annex A\n<<<\n''2.1 Ethical frameworks for climate change''\n''2.2 Intertemporal appraisals and discounting''\n''2.3 Conclusions''\n''2.4 References''\n<<<\n----\nDownload pdf version of Chapter 2: Annex A\nhttp://www.climate-change-two.net/stern-review/annex-2a.pdf 14pp. (371 Kb)
!How climate change will affect people around the world\n!!Key Messages\n* Climate change threatens the basic elements of life for people around the world - access to water, food, health, and use of land and the environment. On current trends, average global temperatures could rise by 2-3°C within the next fifty years or so, leading to many severe impacts, often mediated by water, including more frequent droughts and floods.\n** Melting glaciers will increase flood risk during the wet season and strongly reduce dry-season water supplies to one-sixth of the world's population, predominantly in the Indian sub-continent, parts of China, and the Andes in South America.\n** Declining crop yields, especially in Africa, are likely to leave hundreds of millions without the ability to produce or purchase sufficient food - particularly if the carbon fertilisation effect is weaker than previously thought, as some recent studies suggest. At mid to high latitudes, crop yields may increase for moderate temperature rises (2-3°C), but then decline with greater amounts of warming.\n** Ocean acidification, a direct result of rising carbon dioxide levels, will have major effects on marine ecosystems, with possible adverse consequences on fish stocks.\n** Rising sea levels will result in tens to hundreds of millions more people flooded each year with a warming of 3 or 4°C. There will be serious risks and increasing pressures for coastal protection in South East Asia (Bangladesh and Vietnam), small islands in the Caribbean and the Pacific, and large coastal cities, such as Tokyo, Shanghai, Hong Kong, Mumbai, Calcutta, Karachi, Buenos Aires, St Petersburg, New York, Miami and London.\n** Climate change will increase worldwide deaths from malnutrition and heat stress. Vector-borne diseases such as malaria and dengue fever could become more widespread if effective control measures are not in place. In higher latitudes, cold-related deaths will decrease.\n** By the middle of the century, 200 million more people may become permanently displaced due to rising sea levels, heavier floods, and more intense droughts, according to one estimate.\n** Ecosystems will be particularly vulnerable to climate change, with one study estimating that around 15-40% of species face extinction with 2°C of warming. Strong drying over the Amazon, as predicted by some climate models, would result in dieback of the forest with the highest biodiversity on the planet.\n* The consequences of climate change will become disproportionately more damaging with increased warming. Higher temperatures will increase the chance of triggering abrupt and large-scale changes that lead to regional disruption, migration and conflict.\n** Warming may induce sudden shifts in regional weather patterns like the monsoons or the El Ni�o. Such changes would have severe consequences for water availability and flooding in tropical regions and threaten the livelihoods of billions.\n** Melting or collapse of ice sheets would raise sea levels and eventually threaten at least 4 million Km^^2^^ of land, which today is home to 5% of the world's population.\n''Contents of Chapter 3\n<<<\n''3.1 Introduction''\n''3.2 Water''\n''3.3 Food''\n''3.4 Health''\n''3.5 Land''\n''3.6 Infrastructure''\n''3.7 Environment''\n''3.8 Non-linear changes and threshold effects''\n''3.9 Conclusion''\n''3.10 References''\n<<<\n----\nDownload pdf version of Chapter 3\nhttp://www.climate-change-two.net/stern-review/chapter-03.pdf 36pp. (1 Mb)
!Implications of climate change for development\n!!Key Messages\n* Climate change poses a real threat to the developing world. Unchecked it will become a major obstacle to continued poverty reduction.\n* Developing countries are especially vulnerable to climate change because of their geographic exposure, low incomes, and greater reliance on climate sensitive sectors such as agriculture. Ethiopia, for example, already has far greater hydrological variability than North America but less than 1% of the artificial water storage capacity per capita.\n* Together these mean that impacts are proportionally greater and the ability to adapt smaller.\n* Many developing countries are already struggling to cope with their current climate.\n* For low-income countries, major natural disasters today can cost an average of 5% of GDP.\n* Health and agricultural incomes will be under particular threat from climate change. For example:\n** Falling farm incomes will increase poverty and reduce the ability of households to invest in a better future and force them to use up meagre savings just to survive.\n** Millions of people will potentially be at risk of climate-driven heat stress, flooding, malnutrition, water related disease and vector borne diseases. For example, dengue transmission in South America may increase by 2 to 5 fold by the 2050s.\n** The cost of climate change in India and South East Asia could be as high as a 9-13% loss in GDP by 2100 compared with what could have been achieved in a world without climate change. Up to an additional 145-220 million people could be living on less than $2 a day and there could be an additional 165,000 to 250,000 child deaths per year in South Asia and sub-Saharan Africa by 2100 (due to income losses alone).\n* Severe deterioration in the local climate could lead, in some parts of the developing world, to mass migration and conflict, especially as another 2-3 billion people are added to the developing world's population in the next few decades:\n** Rising sea levels, advancing desertification and other climate-driven changes could drive millions of people to migrate: more than a fifth of Bangladesh could be under water with a 1m rise in sea levels - a possibility by the end of the century.\n** Drought and other climate-related shocks risk sparking conflict and violence, with West Africa and the Nile Basin particularly vulnerable given their high water interdependence.\n* These risks place an even greater premium on fostering growth and development to reduce the vulnerability of developing countries to climate change.\n* However, little can now be done to change the likely adverse effects that some developing countries will face in the next few decades, and so some adaptation will be essential. Strong and early mitigation is the only way to avoid some of the more severe impacts that could occur in the second half of this century.\n''Contents of Chapter 4\n<<<\n''4.1 Introduction''\n''4.2 The vulnerability of developing countries to a changing climate''\n''4.3 Direct implications of climate change for health, livelihoods and growth: what can be learnt from natural disasters?''\n''4.4 What do global climate change models predict for developing countries?''\n''4.5 Impact of climate change on economic growth prospects and implications for incomes and health''\n''4.6 Population movement and risk of conflict''\n''4.7 Implications of Climate Change on other Aspects of Development''\n''4.8 Conclusion''\n''4.9 References''\n<<<\n----\nDownload pdf version of Chapter 4\nhttp://www.climate-change-two.net/stern-review/chapter-04.pdf 30pp. (832 Kb)
!Costs of climate change in developed countries\n!!Key Messages\n* Climate change will have some positive effects for a few developed countries for moderate amounts of warming, but will become very damaging at the higher temperatures that threaten the world in the second half of this century.\n** In higher latitude regions, such as Canada, Russia and Scandinavia, climate change could bring net benefits up to 2 or 3°C through higher agricultural yields, lower winter mortality, lower heating requirements, and a potential boost to tourism. But these regions will also experience the most rapid rates of warming with serious consequences for biodiversity and local livelihoods.\n** Developed countries in lower latitudes will be more vulnerable. Regions where water is already scarce will face serious difficulties and rising costs. Recent studies suggest a 2°C rise in global temperatures may lead to a 20% reduction in water availability and crop yields in southern Europe and a more erratic water supply in California, as the mountain snowpack melts by 25 - 40%.\n** In the USA, one study predicts a mix of costs and benefits initially (� 1% GDP), but then declines in GDP even in the most optimistic scenarios once global temperatures exceed 3°C.\n** The poorest will be the most vulnerable. People on lower incomes are more likely to live in poorquality housing in higher-risk areas and have fewer financial resources to cope with climate change, including lack of comprehensive insurance cover.\n* The costs of extreme weather events, such as storms, floods, droughts, and heatwaves, will increase rapidly at higher temperatures, potentially counteracting some of the early benefits of climate change. Costs of extreme weather alone could reach 0.5 - 1% of world GDP by the middle of the century, and will keep rising as the world warms.\n** Damage from hurricanes and typhoons will increase substantially from even small increases in storm severity, because they scale as the cube of windspeed or more. A 5 - 10% increase in hurricane windspeed is predicted to approximately double annual damages, resulting in total losses of 0.13% of GDP each year on average in the USA alone.\n** The costs of flooding in Europe are likely to increase, unless flood management is strengthened in line with the rising risk. In the UK, annual flood losses could increase from around 0.1% of GDP today to 0.2 - 0.4% of GDP once global temperature increases reach 3 to 4°C.\n** Heatwaves like 2003 in Europe, when 35,000 people died and agricultural losses reached $15 billion, will be commonplace by the middle of the century.\n* At higher temperatures, developed economies face a growing risk of large-scale shocks.\n** Extreme weather events could affect trade and global financial markets through disruptions to communications and more volatile costs of insurance and capital.\n** Major areas of the world could be devastated by the social and economic consequences of very high temperatures. As history shows, this could lead to large-scale and disruptive population movement and trigger regional conflict.\n''Contents of Chapter 5\n<<<\n''5.1 Introduction''\n''5.2 Impacts on wealth and output''\n''5.3 Key vulnerabilities''\n''5.4 Impacts of extreme events''\n''5.5 Large-scale impacts and systemic shocks''\n''5.6 Conclusion''\n''5.7 References''\n<<<\n----\nDownload pdf version of Chapter 5\nhttp://www.climate-change-two.net/stern-review/chapter-05.pdf 21pp. (469 Kb)
!Economic modelling of climate-change impacts\n!!Key Messages\n* The monetary cost of climate change is now expected to be higher than many earlier studies suggested, because these studies tended not to include some of the most uncertain but potentially most damaging impacts.\n* Modelling the overall impact of climate change is a formidable challenge, involving forecasting over a century or more as the effects appear with long lags and are very long-lived. The limitations to our ability to model over such a time scale demand caution in interpreting results, but projections can illustrate the risks involved - and policy here is about the economics of risk and uncertainty.\n* Most formal modelling has used as a starting point 2-3°C warming. In this temperature range, the cost of climate change could be equivalent to around a 0-3% loss in global GDP from what could have been achieved in a world without climate change. Poor countries will suffer higher costs.\n* However, 'business as usual' (BAU) temperature increases may exceed 2-3°C by the end of this century. This increases the likelihood of a wider range of impacts than previously considered, more difficult to quantify, such as abrupt and large-scale climate change. With 5-6°C warming, models that include the risk of abrupt and large-scale climate change estimate a 5-10% loss in global GDP, with poor countries suffering costs in excess of 10%. The risks, however, cover a very broad range and involve the possibility of much higher losses. This underlines the importance of revisiting past estimates.\n* Modelling over many decades, regions and possible outcomes demands that we make distributional and ethical judgements systematically and explicitly. Attaching little weight to the future, simply because it is in the future ('pure time discounting'), would produce low estimates of cost - but if you care little for the future you will not wish to take action on climate change.\n* Using an Integrated Assessment Model, and with due caution about the ability to model, we estimate the total cost of BAU climate change over the next two centuries to equate to an average reduction in global per-capita consumption of 5%, at a minimum, now and forever.\n* The cost of BAU would increase still further, were the model to take account of three important factors:\n** First, including direct impacts on the environment and human health ('non-market' impacts) increases the total cost of BAU climate change from 5% to 11%, although valuations here raise difficult ethical and measurement issues. But this does not fully include 'socially contingent' impacts such as social and political instability, which are very difficult to measure in monetary terms;\n** Second, some recent scientific evidence indicates that the climate system may be more responsive to greenhouse-gas emissions than previously thought, because of the existence of amplifying feedbacks in the climate system. Our estimates indicate that the potential scale of the climate response could increase the cost of BAU climate change from 5% to 7%, or from 11% to 14% if non-market impacts are included. In fact, these may be only modest estimates of the bigger risks - the science here is still developing and broader risks are plausible;\n** Third, a disproportionate burden of climate change impacts fall on poor regions of the world.\n* Based on existing studies, giving this burden stronger relative weight could increase the cost of BAU by more than one quarter.\n* Putting these three additional factors together would increase the total cost of BAU climate change to the equivalent of around a 20% reduction in current per-capita consumption, now and forever.\n* Distributional judgements, a concern with living standards beyond those elements reflected in GDP, and modern approaches to uncertainty all suggest that the appropriate estimate of damages may well lie in the upper part of the range 5-20%. Much, but not all, of that loss could be avoided through a strong mitigation policy. We argue in Part III that this can be achieved at a far lower cost.\n''Contents of Chapter 6\n<<<\n''6.1 Introduction''\n''6.2 What existing models calculate and include''\n''6.3 Do the existing models fully capture the likely cost of climate change?''\n''6.4 Calculating the global cost of climate change: an 'expected-utility' analysis''\n''6.5 Conclusion''\n''6.6 References''\n<<<\n----\nDownload pdf version of Chapter 6\nhttp://www.climate-change-two.net/stern-review/chapter-06.pdf 25pp. (329 Kb)
!Projecting the growth of greenhouse-gas emissions\n!!Key Messages\n* Greenhouse-gas concentrations in the atmosphere now stand at around 430ppm CO~~2~~ equivalent, compared with only 280ppm before the Industrial Revolution. The stock is rising, driven by increasing emissions from human activities, including energy generation and land-use change.\n* Emissions have been driven by economic development. CO~~2~~ emissions per head have been strongly correlated with GDP per head across time and countries. North America and Europe have produced around 70% of CO~~2~~ emissions from energy production since 1850, while developing countries - non-Annex 1 parties under the Kyoto Protocol - account for less than one quarter of cumulative emissions.\n* Annual emissions are still rising. Emissions of carbon dioxide, which accounts for the largest share of greenhouse gases, grew at an average annual rate of around 2½% between 1950 and 2000. In 2000, emissions of all greenhouse gases were around 42Gt CO~~2~~e, increasing concentrations at a rate of about 2.7ppm CO~~2~~e per year.\n* Without action to combat climate change, atmospheric concentrations of greenhouse gases will continue to rise. In a plausible 'business as usual' scenario, they will reach 550ppm CO~~2~~e by 2035, then increasing at 4½ppm per year and still accelerating.\n* Most future emissions growth will come from today's developing countries, because of more rapid population and GDP growth than developed countries, and an increasing share of energy-intensive industries. The non-Annex 1 parties are likely to account for over three quarters of the increase in energy-related CO~~2~~ emissions between 2004 and 2030, according to the International Energy Agency, with China alone accounting for over one third of the increase.\n* Total emissions are likely to increase more rapidly than emissions per head, as global population growth is likely to remain positive at least to 2050.\n* The relationship between economic growth and development and CO~~2~~ emissions growth is not immutable. There are examples where changes in energy technologies, the structure of economies and the pattern of demand have reduced the responsiveness of emissions to income growth, particularly in the richest countries. Strong, deliberate policy choices will be needed, however, to decarbonise both developed and developing countries on the scale required for climate stabilisation.\n* Increasing scarcity of fossil fuels alone will not stop emissions growth in time. The stocks of hydrocarbons that are profitable to extract (under current policies) are more than enough to take the world to levels of CO~~2~~ concentrations well beyond 750ppm, with very dangerous consequences for climate-change impacts. Indeed, with business as usual, energy users are likely to switch towards more carbon-intensive coal, oil shales and synfuels, tending to increase rates of emissions growth. It is important to redirect energy-sector research, development and investment away from these sources towards low-carbon technologies.\n* Extensive carbon capture and storage would allow some continued use of fossil fuels, and help guard against the risk of fossil fuel prices falling in response to global climate-change policy, undermining its effectiveness.\n''Contents of Chapter 7\n<<<\n''7.1 Introduction''\n''7.2 Past greenhouse-gas emissions and current trends''\n''7.3 The determinants of energy-related CO2 emissions''\n''7.4 The role of growth in incomes and population in driving emissions''\n''7.5 The role of technology and efficiency in breaking the link between growth and emissions''\n''7.6 The impact of fossil-fuel scarcity on emissions growth''\n''7.7 References''\n<<<\n----\nDownload pdf version of Chapter 7\nhttp://www.climate-change-two.net/stern-review/chapter-07.pdf 22pp. (680 Kb)\nChapter 7: Annex A: Climate change and the environmental Kuznets curve 2pp. (54 Kb)\nhttp://www.climate-change-two.net/stern-review/annex-07a.pdf\nChapter 7: Annex B: Emissions from the power sector 3pp. (36 Kb)\nhttp://www.climate-change-two.net/stern-review/annex-07b.pdf\nChapter 7: Annex C: Emissions from the transport sector 4pp. (139 Kb)\nhttp://www.climate-change-two.net/stern-review/annex-07c.pdf\nChapter 7: Annex D: Emissions from the industry sector 4pp. (39 Kb)\nhttp://www.climate-change-two.net/stern-review/annex-07d.pdf\nChapter 7: Annex F: Emissions from the land-use change and forestry sector pp. ()\nhttp://www.climate-change-two.net/stern-review/annex-7f.pdf
!Climate change and the environmental Kuznets curve\n\n----\nDownload pdf version of Chapter 7: Annex A\nhttp://www.climate-change-two.net/stern-review/annex-07a.pdf 2pp. (54 Kb)
!Emissions from the power sector\n\n----\nDownload pdf version of Chapter 7: Annex B\nhttp://www.climate-change-two.net/stern-review/annex-07b.pdf 3pp. (36 Kb)
!Emissions from the transport sector\n\n----\nDownload pdf version of Chapter 7: Annex C\nhttp://www.climate-change-two.net/stern-review/annex-07c.pdf 4pp. (139 Kb)
!Emissions from the industry sector\n\n----\nDownload pdf version of Chapter 7: Annex D\nhttp://www.climate-change-two.net/stern-review/annex-07d.pdf 4pp. (39 Kb)
!Emissions from the land-use change and forestry sector\n\n----\nDownload pdf version of Chapter 7: Annex F\nhttp://www.climate-change-two.net/stern-review/annex-7f.pdf 0pp. ()
!The challenge of stabilisation\n!!Key Messages\n* The world is already irrevocably committed to further climate changes, which will lead to adverse impacts in many areas. Global temperatures, and therefore the severity of impacts, will continue to rise unless the stock of greenhouse gases is stabilised.\n* Urgent action is now required to prevent temperatures rising to even higher levels, lowering the risks of impacts that could otherwise seriously threaten lives and livelihoods worldwide.\n* Stabilisation - at whatever level - requires that annual emissions be brought down to the level that balances the Earth's natural capacity to remove greenhouse gases from the atmosphere. In the long term, global emissions will need to be reduced to less than 5Gt CO~~2~~e, over 80% below current annual emissions, to maintain stabilisation. The longer emissions remain above the level of natural absorption, the higher the final stabilisation level will be.\n* Stabilisation cannot be achieved without global action to reduce emissions. Early action to stabilise this stock at a relatively low level will avoid the risk and cost of bigger cuts later. The longer action is delayed, the harder it will become.\n* Stabilising at or below 550 ppm CO~~2~~e (around 440-500 ppm CO~~2~~ only) would require global emissions to peak in the next 10 - 20 years, and then fall at a rate of at least 1-3% per year. By 2050, global emissions would need to be around 25% below current levels. These cuts will have to be made in the context of a world economy in 2050 that may be three to four times larger than today - so emissions per unit of GDP would need to be just one quarter of current levels by 2050.\n* Delaying the peak in global emissions from 2020 to 2030 would almost double the rate of reduction needed to stabilise at 550 ppm CO~~2~~e. A further ten-year delay could make stabilisation at 550 ppm CO~~2~~e impractical, unless early actions were taken to dramatically slow the growth in emissions prior to the peak.\n* To stabilise at 450 ppm CO~~2~~e, without overshooting, global emissions would need to peak in the next 10 years and then fall at more than 5% per year, reaching 70% below current levels by 2050. This is likely to be unachievable with current and foreseeable technologies.\n* If carbon absorption were to weaken, future emissions would need to be cut even more rapidly to hit any given stabilisation target for atmospheric concentration.\n* Overshooting paths involve greater risks to the climate than if the stabilisation level were approached from below, as the world would experience at least a century of temperatures, and therefore impacts, close to those expected for the peak level of emissions.\n* Some of these impacts might be irreversible. In addition, overshooting paths require that emissions be reduced to extremely low levels, below the level of natural absorption, which may not be feasible.\n* Energy systems are subject to very significant inertia. It is important to avoid getting 'locked into' long-lived high carbon technologies, and to invest early in low carbon alternatives.\n''Contents of Chapter 8\n<<<\n''8.1 Introduction''\n''8.2 Stabilising the stock of greenhouse gases''\n''8.3 Stabilising carbon dioxide concentrations''\n''8.4 Stabilising concentrations of non-CO2 gases''\n''8.5 Pathways to stabilisation''\n''8.6 Timing of Emissions Reductions''\n''8.7 The Scale of the Challenge''\n''8.8 Conclusions''\n''8.9 References''\n<<<\n----\nDownload pdf version of Chapter 8\nhttp://www.climate-change-two.net/stern-review/chapter-08.pdf 18pp. (660 Kb)
!Identifying the costs of mitigation\n!!Key Messages\n* Slowly reducing emissions of greenhouse gasses that cause climate change is likely to entail some costs. Costs include the expense of developing and deploying low-emission and high-efficiency technologies and the cost to consumers of switching spending from emissions-intensive to low-emission goods and services.\n* Fossil fuel emissions can be cut in several ways: reducing demand for carbon-intensive products, increasing energy efficiency, and switching to low-carbon technologies. Non-fossil fuel emissions are also an important source of emission savings. Costs will differ considerably depending on which methods and techniques are used where.\n** Reducing demand for emissions-intensive goods and services is part of the solution. If prices start to reflect the full costs of production, including the greenhouse gas externality, consumers and firms will react by shifting to relatively cheaper low-carbon products. Increasing awareness of climate change is also likely to influence demand. But demand-side factors alone are unlikely to achieve all the emissions reductions required.\n** Efficiency gains offer opportunities both to save money and to reduce emissions, but require the removal of barriers to the uptake of more efficient technologies and methods.\n** A range of low-carbon technologies is already available, although many are currently more expensive than fossil-fuel equivalents. Cleaner and more efficient power, heat and transport technologies are needed to make radical emission cuts in the medium to long term. Their future costs are uncertain, but experience with other technologies has helped to develop an understanding of the key risks. The evidence indicates that efficiency is likely to increase and average costs to fall with scale and experience.\n** Reducing non-fossil fuel emissions will also yield important emission savings. The cost of reducing emissions from deforestation, in particular, may be relatively low, if appropriate institutional and incentive structures are put in place and the countries facing this challenge receive adequate assistance. Emissions cuts will be more challenging to achieve in agriculture, the other main non-energy source.\n* A portfolio of technologies will be needed. Greenhouse gases are produced by a wide range of activities in many sectors, so it is highly unlikely that any single technology will deliver all the necessary emission savings. It is also uncertain which technologies will turn out to be cheapest, so a portfolio will be required for low-cost abatement.\n* An estimate of resource costs suggests that the annual cost of cutting total GHG to about three quarters of current levels by 2050, consistent with a 550ppm CO~~2~~e stabilisation level, will be in the range - 1.0 to +3.5% of GDP, with an average estimate of approximately 1%. This depends on steady reductions in the cost of low-carbon technologies, relative to the cost of the technologies currently deployed, and improvements in energy efficiency. The range is wide because of the uncertainties as to future rates of innovation and fossil-fuel extraction costs. The better the policy, the lower the cost.\n* Mitigation costs will vary according to how and when emissions are cut. Without early, well-planned action, the costs of mitigating emissions will be greater.\n''Contents of Chapter 9\n<<<\n''9.1 Introduction''\n''9.2 Calculating the costs of cutting GHG emissions''\n''9.3 The range of abatement opportunities''\n''9.4 Cutting non-fossil-fuel related emissions''\n''9.5 Reducing the demand for carbon-intensive goods and services''\n''9.6 Improving energy efficiency''\n''9.7 Low-carbon technologies''\n''9.8 A technology-based approach to costing mitigation of fossil fuel emissions''\n''9.9 Other technology-based studies on cost''\n''9.10 Conclusion''\n''9.11 References''\n<<<\n----\nDownload pdf version of Chapter 9\nhttp://www.climate-change-two.net/stern-review/chapter-09.pdf 28pp. (363 Kb)
<<<\n"No problem can be solved from the same level of consciousness that created it."\n//Albert Einstein// (1879 - 1955) Physicist & Nobel Laureate \n<<<\n''Climate Change 2.0'' is being developed from a vision of a collaborative application of [[Web 2.0]] methodologies to the global [[climate change crisis|Climate change crisis]] and incorporating a transition to an [[Open Source]], [[Creative Commons]] climate. ''Climate Change 2.0'' is based on the recognition of the vital contribution that the combination of the [[economics of information|Economics of information]] and information and communications technologies (ICT) can contribute - and already are contributing - to addressing what is increasingly recognized as the greatest challenges to a sustainable common future, both through the power of the technologies and through the progressive discovery and realization of the fundamental properties and nature of a digital knowledge-based universe and the accompanying profound freedoms and transformation of human consciousness and the emergence of digitally-connected global civil society that has been growing rapidly since the early stages of preparations for the 1992 Earth Summit - of which the [[United Nations Framework Convention for Climate Change]] was a key component.\n\n\nWhile Climate Change 2.0 \n<<<\n"''The Interlocking Crises''\nUntil recently, the planet was a large world in which human activities and their effects were neatly compartmentalized within nations, within sectors (energy, agriculture, trade), and within broad areas of concern (environment, economics, social). These compartments have begun to dissolve. This applies in particular to the various global 'crises' that have seized public concern, particularly over the past decade. These are not separate crises: an environmental crisis, a development crisis, an energy crisis. They are all one."\n//[[Our Common Future, From One Earth to One World|http://www.un-documents.net/ocf-ov.htm]]//\n<<<\n''Climate Change 2.0'' is being jointly launched by the [[NGO Networking Commitee]]\n\nDespite the fact that ICT has made indispensable contributions to the understanding of climate change. the lack of recognition of the current and potential role of ICT - and of the [[economics of information|Economics of information]], in addressing the climate change crisis is striking. Among the many contributions of ICT are the:\n* collection and analysis of the evidence demonstrating the nature and dynamics of climate change would not be possible;\n* use of earth observation satellite imagery\n* extensive and timely collaboration among thousands of research scientists, advocates and activists concerned with climate change;\n* use of the Internet as a key medium in the publication and dissemination of information and publications relating to climate change trends\nHowever, while there is a massive amount of information freely available online in relation to climate change,\n* there is no systematic strategy to optimize the organization of climate change information for a digital environment\n* almost all of the major documents are published as pdf files - a format optimized for printing - and that offers fairly primitive and cumbersome navigational features compared to the combination of HTML, scripting languages and database-driven methodologies\n* the pdf files are generally created without even the incorporation of internal pdf navigational tools, i.e. bookmarks, or with systematic inclusion of hyperlinks to references\nIn addition. although there are some excellent examples of the value of process-oriented ICT, little attention is given to the actual and potential use of ICT in such areas as:\n* monitoring and analyzing industrial energy & resource use, often within the conceptual framework of ''industrial ecology'' - see <<wikipedia "Industrial ecology">> at <<wikipedia Wikipedia>>.\n* monitoring and management of residential & office energy use\n* monitoring and management of traffic congestion & traffic flows\n* energy-saving through substituting the movement of information for the movement of people\n!!![[Background / Context]]\n!!![[Draft Plan of Action]]\n!!![[Current Status]]\n!!![[Related Initiatives]]
To date a number of elements of Climate 2.0 have been under development, with a short-term focus on the development of an online platform for the September 2007 ''60th Annual DPI/NGO Conference'' - on the theme of Climate Change in , and in the broader context of the [[NGO Committee on Education]]'s focus on the [[United Nations Decade of Education for Sustainable Development]], 2005-2014, and related international decades.\n\nThe DPI/NGO Climate Change Conference offers a unique opportunity for a demonstration project of [[Climate Change 2.0]] as it will be the last to be held at the United Nations Headquarters before major renovations begin, and there is strong interest in developing a prototype interactive online framework that would provide for real-time participation in the Conference, for this Conference, and as a model to be used for future Annual DPI/NGO Conferences.\n\nAmong the elements that are under development are the following:\n* [[Climate Change 2.0 - The Manhattan Connection]]<br>[[www.climate-change-two.net/|http://www.climate-change-two.net/]]\n** [[Rescuing a Planet Under Stress and a Civilization in Trouble: Plan B 3.0 (beta)]]<br>[[www.climate-change-two.net/rescuing/|http://www.climate-change-two.net/rescuing/]]\n** [[The Wealth of Networks: How Social Production Transforms Markets and Freedom]]<br>[[www.climate-change-two.net/wealth-of-networks/|http://www.climate-change-two.net/wealth-of-networks/]]\n** [[Economics of Climate Change: The Stern Review]]<br>[[www.climate-change-two.net/stern-review/|http://www.climate-change-two.net/stern-review/]]\n** [[Education, Youth & Technology for Sustainable Development]]<br>[[www.ngo-education.net/workshop/|http://www.ngo-education.net/workshop/]]\n** [[UN Documents Cooperation Circles: Gathering a Body of Global Agreements]]<br>[[www.un-documents.net/|http://www.un-documents.net/]]\n** [[TiddlyPerfect: An emerging hybrid information species]]<br>[[www.tiddlyperfect.net/|http://www.tiddlyperfect.net/]]
<<<\n"No problem can be solved from the same level of consciousness that created it."\n//Albert Einstein// (1879 - 1955) Physicist & Nobel Laureate \n<<<\n''Climate Change 2.0: Information Ecology of Climate Change'' is intended to harness the power of the Internet, ''Web 2.0'' tools, the increasingly powerful, converging development of hand-held communications devices andthe accompanying transformative change in global consciousness that are taking place in a millennial transition to a knowledge-based universe to the challenge of global climate change / global warming. \n\nIn adopting this approach, Climate Change 2.0 seeks to engage in appreciattive inquiry into the . including attention to a parallel change in climate - the cascading global transition to a free and open climate of knowledge - a climate of cooperation, sharing and collaboration that is increasingly accessible and yielding fruit in the realms of a knowledge-based universe. A central element of ''Climate Change 2.0'' is the use of Free and Open Source software and support for systematic expansion and development of a global [[Creative Commons]]. \n\n''Climate Change 2.0'' is also a response to a new, second phase of the global dialogue on [[dangerous anthropogenic climate change]]: As the February 2007 report from the Intergovernmental Panel on Climate Change made clear, the debate is over. to the ''Inconvenient Truth'' of dangerous global warming, confirmed by the initial report of the [[IPCC]]'s [[Fourth Assessment Report]], the first section of which was released on February 5, 2007. The global consensus is almost unanimous: the debate is over! In phase 2, the challenge is how to respond to this [[Inconvenient Truth]] Now we must take responsible action in light of that truth. \n\n''Climate Change 2.0'' is based on the emerging science of [[information ecology|Information Ecology]] - a science that is based on an understanding of the nature and dynamics of information ecosystems: of an appreciation of the architecture of the information habitats where information lives within these ecosystems, and of the nature and properties of the myriad information species that absorb, digest, organize, exchange, redistribute and transform other information species. In the light of a global commitment to the value of knowledge, a key determining basis for the evolution of these species would truth, Those information species that can so that the value of the information they contain becomes more fully accessible.\n\n''Information ecology'' is also based an an appreciation of the nature, dynamics and fundamental properties of information, information systems and networks; to the interaction between information species - food chains, patterns of competition for access and/or dominance; and to the remarkable new forms of complex, intelligent, information habitats that are becoming possible - of which TiddlyPerfect would appear to be a prime example. [[read more|Climate Change 2.0]]
/***\n| Name:|CloseOnCancelPlugin|\n| Description:|Closes the tiddler if you click new tiddler then cancel. Default behaviour is to leave it open|\n| Version:|6.9.3|\n| Date:|30-Sep-2006|\n| Source:|http://mptw.tiddlyspot.com/#CloseOnCancelPlugin|\n| Author:|Simon Baird <simon.baird@gmail.com>|\n| CoreVersion:|2.1.x|\n***/\n//{{{\nmerge(config.commands.cancelTiddler,{\n\n handler_orig_closeUnsaved: config.commands.cancelTiddler.handler,\n\n handler: function(event,src,title) {\n this.handler_orig_closeUnsaved(event,src,title);\n if (!store.tiddlerExists(title) && !store.isShadowTiddler(title))\n story.closeTiddler(title,true);\n return false;\n }\n\n});\n\n//}}}\n\n
Background: #fff\nForeground: #000\nPrimaryPale: #bef\nPrimaryLight: #18f\nPrimaryMid: #04b\nPrimaryDark: #017\nSecondaryPale: #ffc\nSecondaryLight: #fe8\nSecondaryMid: #db4\nSecondaryDark: #841\nTertiaryPale: #eee\nTertiaryLight: #ccc\nTertiaryMid: #999\nTertiaryDark: #666\nError: #f88\n
''CONGO'' - the ''C''onference ''O''f ''N''on-''G''overnmental ''O''rganizations in Consultative Relationship with the United Nations - is an independent, international, not-for-profit membership association of nongovernmental organizations that facilitates the participation of NGOs in United Nations debates and decisions. CONGO is most active in the major UN centers of New York, Geneva, and Vienna, but extends its work to all regions of the world. In 2000. CONGO became an NGO in General Consultative Status with the United Nations Economic and Social Council.\n* http://www.ngocongo.org
<html><hide linebreaks>\nPlease use this form to send any messages, comments or questions about this site:\n<p>\n<form method=post target=email action="http://cgi.eytv4sfc.net/gdform.cgi" style="display:inline">\n<input type=hidden name=to value="seasons-of-peace@earthlink.net.net">\n<input type=hidden name=subject value="Stern Review feedback">\n<input type=hidden name=prefix value="The Economics of Climate Change">\n<input type=hidden name=url value="javascript:window.close();">\n<input type=text name=from style="width:49%" value="your name" onfocus="this.select()"><!--\n--><input type=text name=reply style="width:49%" value="your email address" onfocus="this.select()"><br>\n<font size=-2>Your message:</font><br>\n<textarea rows=7 cols=50 name=text style="width:98%" onfocus="this.select()"></textarea><br>\n<font size=-2>Enter your information, comments or questions, then press </font><input type=submit value="send"></form>\n<p>\nPlease note that your message will probably remain here are you have sent it, and that doesn't mean the message hasn't been sent!\n</html>
/***\n|Name|HoverMenuPlugin|\n|Created by|SaqImtiaz|\n|Location|http://tw.lewcid.org/#HoverMenuPlugin|\n|Version|1.11|\n|Requires|~TW2.x|\n!Description:\nProvides a hovering menu on the edge of the screen for commonly used commands, that scrolls with the page.\n\n!Demo:\nObserve the hovering menu on the right edge of the screen.\n\n!Installation:\nCopy the contents of this tiddler to your TW, tag with systemConfig, save and reload your TW.\nTo customize your HoverMenu, edit the HoverMenu shadow tiddler.\n\nTo customize whether the menu sticks to the right or left edge of the screen, and its start position, edit the HoverMenu configuration settings part of the code below. It's well documented, so don't be scared!\n\nThe menu has an id of hoverMenu, in case you want to style the buttons in it using css.\n\n!Notes:\nSince the default HoverMenu contains buttons for toggling the side bar and jumping to the top of the screen and to open tiddlers, the ToggleSideBarMacro, JumpMacro and the JumpToTopMacro are included in this tiddler, so you dont need to install them separately. Having them installed separately as well could lead to complications.\n\nIf you dont intend to use these three macros at all, feel free to remove those sections of code in this tiddler.\n\n!To Do:\n* rework code to allow multiple hovering menus in different positions, horizontal etc.\n* incorporate code for keyboard shortcuts that correspond to the buttons in the hovermenu\n\n!History:\n*03-08-06, ver 1.1.2: compatibility fix with SelectThemePlugin\n*03-08-06, ver 1.11: fixed error with button tooltips\n*27-07-06, ver 1.1 : added JumpMacro to hoverMenu\n*23-07-06\n\n!Code\n***/\n\n/***\nstart HoverMenu plugin code\n***/\n//{{{\nconfig.hoverMenu={};\n//}}}\n\n/***\nHoverMenu configuration settings\n***/\n//{{{\nconfig.hoverMenu.settings={\n align: 'right', //align menu to right or left side of screen, possible values are 'right' and 'left' \n x: 18, // horizontal distance of menu from side of screen, increase to your liking.\n y: 200 //vertical distance of menu from top of screen at start, increase or decrease to your liking\n };\n//}}}\n\n//{{{\n//continue HoverMenu plugin code\nconfig.hoverMenu.handler=function()\n{ \n if (!document.getElementById("hoverMenu"))\n {\n var theMenu = createTiddlyElement(document.getElementById("contentWrapper"), "div","hoverMenu");\n theMenu.setAttribute("refresh","content");\n theMenu.setAttribute("tiddler","HoverMenu");\n var menuContent = store.getTiddlerText("HoverMenu");\n wikify(menuContent,theMenu);\n }\n\n var Xloc = this.settings.x;\n Yloc =this.settings.y;\n var ns = (navigator.appName.indexOf("Netscape") != -1);\n function SetMenu(id)\n {\n var GetElements=document.getElementById?document.getElementById(id):document.all?document.all[id]:document.layers[id];\n if(document.layers)GetElements.style=GetElements;\n GetElements.sP=function(x,y){this.style[config.hoverMenu.settings.align]=x +"px";this.style.top=y +"px";};\n GetElements.x = Xloc;\n GetElements.y = findScrollY();\n GetElements.y += Yloc;\n return GetElements;\n }\n window.LoCate_XY=function()\n {\n var pY = findScrollY();\n ftlObj.y += (pY + Yloc - ftlObj.y)/15;\n ftlObj.sP(ftlObj.x, ftlObj.y);\n setTimeout("LoCate_XY()", 10);\n }\n ftlObj = SetMenu("hoverMenu");\n LoCate_XY();\n};\n\nwindow.old_lewcid_hovermenu_restart = restart;\nrestart = function()\n{\n window.old_lewcid_hovermenu_restart();\n config.hoverMenu.handler();\n};\n\nsetStylesheet(\n"#hoverMenu .imgLink, #hoverMenu .imgLink:hover {border:none; padding:0px; float:right; margin-bottom:2px; margin-top:0px;}\sn"+\n"#hoverMenu .button, #hoverMenu .tiddlyLink {border:none; font-weight:bold; background:#18f; color:#FFF; padding:0 5px; float:right; margin-bottom:4px;}\sn"+\n"#hoverMenu .button:hover, #hoverMenu .tiddlyLink:hover {font-weight:bold; border:none; color:#fff; background:#000; padding:0 5px; float:right; margin-bottom:4px;}\sn"+\n"#hoverMenu .button {width:100%; text-align:center}"+\n"#hoverMenu { position:absolute; width:7px;}\sn"+\n"\sn","hoverMenuStyles");\n\n\nconfig.macros.renameButton={};\nconfig.macros.renameButton.handler = function(place,macroName,params,wikifier,paramString,tiddler)\n{\n\n if (place.lastChild.tagName!="BR")\n {\n place.lastChild.firstChild.data = params[0];\n if (params[1]) {place.lastChild.title = params[1];}\n }\n};\n\nconfig.shadowTiddlers["HoverMenu"]="<<top>>\sn<<toggleSideBar>><<renameButton '>' >>\sn<<jump j '' top>>\sn<<saveChanges>><<renameButton s 'Save TiddlyWiki'>>\sn<<newTiddler>><<renameButton n>>\sn";\n//}}}\n//end HoverMenu plugin code\n\n//Start ToggleSideBarMacro code\n//{{{\nconfig.macros.toggleSideBar={};\n\nconfig.macros.toggleSideBar.settings={\n styleHide : "#sidebar { display: none;}\sn"+"#contentWrapper #displayArea { margin-right: 1em;}\sn"+"",\n styleShow : " ",\n arrow1: "«",\n arrow2: "»"\n};\n\nconfig.macros.toggleSideBar.handler=function (place,macroName,params,wikifier,paramString,tiddler)\n{\n var tooltip= params[1]||'toggle sidebar';\n var mode = (params[2] && params[2]=="hide")? "hide":"show";\n var arrow = (mode == "hide")? this.settings.arrow1:this.settings.arrow2;\n var label= (params[0]&&params[0]!='.')?params[0]+" "+arrow:arrow;\n var theBtn = createTiddlyButton(place,label,tooltip,this.onToggleSideBar,"button HideSideBarButton");\n if (mode == "hide")\n { \n (document.getElementById("sidebar")).setAttribute("toggle","hide");\n setStylesheet(this.settings.styleHide,"ToggleSideBarStyles");\n }\n};\n\nconfig.macros.toggleSideBar.onToggleSideBar = function(){\n var sidebar = document.getElementById("sidebar");\n var settings = config.macros.toggleSideBar.settings;\n if (sidebar.getAttribute("toggle")=='hide')\n {\n setStylesheet(settings.styleShow,"ToggleSideBarStyles");\n sidebar.setAttribute("toggle","show");\n this.firstChild.data= (this.firstChild.data).replace(settings.arrow1,settings.arrow2);\n }\n else\n { \n setStylesheet(settings.styleHide,"ToggleSideBarStyles");\n sidebar.setAttribute("toggle","hide");\n this.firstChild.data= (this.firstChild.data).replace(settings.arrow2,settings.arrow1);\n }\n\n return false;\n}\n\nsetStylesheet(".HideSideBarButton .button {font-weight:bold; padding: 0 5px;}\sn","ToggleSideBarButtonStyles");\n//}}}\n//end ToggleSideBarMacro code\n\n//start JumpToTopMacro code\n//{{{\nconfig.macros.top={};\nconfig.macros.top.handler=function(place,macroName)\n{\n createTiddlyButton(place,"^","jump to top",this.onclick);\n}\nconfig.macros.top.onclick=function()\n{\n window.scrollTo(0,0);\n};\n\nconfig.commands.top =\n{\n text:" ^ ",\n tooltip:"jump to top"\n};\n\nconfig.commands.top.handler = function(event,src,title)\n{\n window.scrollTo(0,0);\n}\n//}}}\n//end JumpToStartMacro code\n\n//start JumpMacro code\n//{{{\nconfig.macros.jump= {};\nconfig.macros.jump.handler = function (place,macroName,params,wikifier,paramString,tiddler)\n{\n var label = (params[0] && params[0]!=".")? params[0]: 'jump';\n var tooltip = (params[1] && params[1]!=".")? params[1]: 'jump to an open tiddler';\n var top = (params[2] && params[2]=='top') ? true: false; \n\n var btn =createTiddlyButton(place,label,tooltip,this.onclick);\n if (top==true)\n btn.setAttribute("top","true")\n}\n\nconfig.macros.jump.onclick = function(e)\n{\n if (!e) var e = window.event;\n var theTarget = resolveTarget(e);\n var top = theTarget.getAttribute("top");\n var popup = Popup.create(this);\n if(popup)\n {\n if(top=="true")\n {createTiddlyButton(createTiddlyElement(popup,"li"),'Top ↑','Top of TW',config.macros.jump.top);\n createTiddlyElement(popup,"hr");}\n \n story.forEachTiddler(function(title,element) {\n createTiddlyLink(createTiddlyElement(popup,"li"),title,true);\n });\n }\n Popup.show(popup,false);\n e.cancelBubble = true;\n if (e.stopPropagation) e.stopPropagation();\n return false;\n}\n\nconfig.macros.jump.top = function()\n{\n window.scrollTo(0,0);\n}\n//}}}\n//end JumpMacro code\n\n//utility functions\n//{{{\nPopup.show = function(unused,slowly)\n{\n var curr = Popup.stack[Popup.stack.length-1];\n var rootLeft = findPosX(curr.root);\n var rootTop = findPosY(curr.root);\n var rootHeight = curr.root.offsetHeight;\n var popupLeft = rootLeft;\n var popupTop = rootTop + rootHeight;\n var popupWidth = curr.popup.offsetWidth;\n var winWidth = findWindowWidth();\n if (isChild(curr.root,'hoverMenu'))\n var x = config.hoverMenu.settings.x;\n else\n var x = 0;\n if(popupLeft + popupWidth+x > winWidth)\n popupLeft = winWidth - popupWidth -x;\n if (isChild(curr.root,'hoverMenu'))\n {curr.popup.style.right = x + "px";}\n else\n curr.popup.style.left = popupLeft + "px";\n curr.popup.style.top = popupTop + "px";\n curr.popup.style.display = "block";\n addClass(curr.root,"highlight");\n if(config.options.chkAnimate)\n anim.startAnimating(new Scroller(curr.popup,slowly));\n else\n window.scrollTo(0,ensureVisible(curr.popup));\n}\n\nwindow.isChild = function(e,parentId) {\n while (e != null) {\n var parent = document.getElementById(parentId);\n if (parent == e) return true;\n e = e.parentNode;\n }\n return false;\n};\n//}}}\n\n\n
The DPI/NGO Conference Planning Committee:\n\n
The contents of this TiddlyWiki web page were generated from a ''~DataPerfect'' database. ~DataPerfect is a little-known, brilliant relational database compantion of the legendary ''~WordPerfect for DOS'', which was used to prepare the text from the pdf files of The Stern Review for input into the ~DataPerfect database. The design of ~DataPerfect makes it an exceptional vehicle for generating content for TiddlyWiki web pages. \n\n~DataPerfect was written, and is still maintained by, ''Lew Bastian'' - older brother of ~WordPerfect's author; before joinging the ''~WordPerfect Corporation'', Lew had worked for ''IBM'', where he had written some of the early disk-caching patents. The development of ~DataPerfect was discontinued by the ''~WordPerfect Corporation'' after the introduction of Windows, and subsequently, Novell made the program freely available; an active ''~DataPerfect Users Group'' - [[http://www.dataperfect.nl|www.dataperfect.nl]] - of which Lew Bastian is a leading member - provides exceptional support.
[[Welcome]]\n[[Executive Summary]]
/***\n|''Name:''|DisableWikiLinksPlugin|\n|''Source:''|http://www.TiddlyTools.com/#DisableWikiLinksPlugin|\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\nThis plugin allows you to disable TiddlyWiki's automatic WikiWord linking behavior, so that WikiWords embedded in tiddler content will be rendered as regular text, instead of being automatically converted to tiddler links. To create a tiddler link when automatic linking is disabled, you must enclose the link text within {{{[[...]]}}}.\n\nYou can also block automatic WikiWord linking behavior only for non-existing tiddler titles, while still automatically linking WikiWords that correspond to existing tiddlers titles or shadow tiddler titles.\n\nYou can also block specific selected WikiWords from being automatically linked by listing them in [[DisableWikiLinksList]], separated by whitespace. This tiddler is optional and, when present, causes the listed words to always be excluded, even if automatic linking of other WikiWords is being permitted. \n\nNote: WikiWords contained in default ''shadow'' tiddlers will be automatically linked unless you select an additional checkbox option lets you disable these automatic links as well, though this is not recommended, since it can make it more difficult to access some TiddlyWiki standard default content (such as AdvancedOptions or SideBarTabs)\n\n!!!!!Configuration\n<<<\nSelf-contained control panel:\n<<option chkDisableNonExistingWikiLinks>> Disable automatic WikiWord links for non-existing tiddlers\n<<option chkDisableWikiLinks>> Disable ALL automatic WikiWord tiddler links\n<<option chkAllowLinksFromShadowTiddlers>> ... except for WikiWords contained in shadow tiddlers\n<<<\n!!!!!Installation\n<<<\nimport (or copy/paste) the following tiddlers into your document:\n''DisableWikiLinksPlugin'' (tagged with <<tag systemConfig>>)\n<<<\n!!!!!Revision History\n<<<\n''2006.12.31 [1.4.0]'' in formatter, test for chkDisableNonExistingWikiLinks\n''2006.12.09 [1.3.0]'' in formatter, test for excluded wiki words specified in DisableWikiLinksList\n''2006.12.09 [1.2.2]'' fix logic in autoLinkWikiWords() (was allowing links TO shadow tiddlers, even when chkDisableWikiLinks is TRUE). \n''2006.12.09 [1.2.1]'' revised logic for handling links in shadow content\n''2006.12.08 [1.2.0]'' added hijack of Tiddler.prototype.autoLinkWikiWords so regular (non-bracketed) WikiWords won't be added to the missing list\n''2006.05.24 [1.1.0]'' added option to NOT bypass automatic wikiword links when displaying default shadow content (default is to auto-link shadow content)\n''2006.02.05 [1.0.1]'' wrapped wikifier hijack in init function to eliminate globals and avoid FireFox 1.5.0.1 crash bug when referencing globals\n''2005.12.09 [1.0.0]'' initial release\n<<<\n!!!!!Credits\n<<<\nThis feature was developed by EricShulman from [[ELS Design Studios|http:/www.elsdesign.com]]\n<<<\n!!!!!Code\n***/\n//{{{\nversion.extensions.disableWikiLinks= {major: 1, minor: 4, revision: 0, date: new Date(2006,12,31)};\n\nif (config.options.chkDisableNonExistingWikiLinks==undefined) config.options.chkDisableNonExistingWikiLinks= false;\nif (config.options.chkDisableWikiLinks==undefined) config.options.chkDisableWikiLinks= false;\nif (config.options.chkAllowLinksFromShadowTiddlers==undefined) config.options.chkAllowLinksFromShadowTiddlers=true;\n\n// find the formatter for wikiLink and replace handler with 'pass-thru' rendering\ninitDisableWikiLinksFormatter();\nfunction initDisableWikiLinksFormatter() {\n for (var i=0; i<config.formatters.length && config.formatters[i].name!="wikiLink"; i++);\n config.formatters[i].coreHandler=config.formatters[i].handler;\n config.formatters[i].handler=function(w) {\n // supress any leading "~" (if present)\n var skip=(w.matchText.substr(0,1)==config.textPrimitives.unWikiLink)?1:0;\n var title=w.matchText.substr(skip);\n var exists=store.tiddlerExists(title);\n var inShadow=w.tiddler && store.isShadowTiddler(w.tiddler.title);\n\n // check for specific excluded wiki words\n var t=store.getTiddlerText("DisableWikiLinksList")\n if (t && t.length && t.indexOf(w.matchText)!=-1)\n { w.outputText(w.output,w.matchStart+skip,w.nextMatch); return; }\n\n // if not disabling links from shadows (default setting)\n if (config.options.chkAllowLinksFromShadowTiddlers && inShadow)\n return this.coreHandler(w);\n\n // check for non-existing non-shadow tiddler\n if (config.options.chkDisableNonExistingWikiLinks && !exists)\n { w.outputText(w.output,w.matchStart+skip,w.nextMatch); return; }\n\n // if not enabled, just do standard WikiWord link formatting\n if (!config.options.chkDisableWikiLinks)\n return this.coreHandler(w);\n\n // just return text without linking\n w.outputText(w.output,w.matchStart+skip,w.nextMatch)\n }\n}\n\nTiddler.prototype.coreAutoLinkWikiWords = Tiddler.prototype.autoLinkWikiWords;\nTiddler.prototype.autoLinkWikiWords = function()\n{\n // DEBUG alert("processing: "+this.title);\n // if all automatic links are not disabled, just return results from core function\n if (!config.options.chkDisableWikiLinks)\n return this.coreAutoLinkWikiWords.apply(this,arguments);\n return false;\n}\n//}}}\n
<!--{{{-->\n<div class='toolbar' macro='toolbar +saveTiddler -cancelTiddler deleteTiddler jump'></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>\n<div class='editorFooter'><span macro='message views.editor.tagPrompt'></span><span macro='tagChooser'></span></div>\n<div class='toolbar' macro='toolbar +saveTiddler -cancelTiddler deleteTiddler jump'></div>\n<!--}}}-->
!!Highlights\n''The scientific evidence is now overwhelming: climate change presents very serious global risks, and it demands an urgent global response.''\n* The benefits of strong, early action on climate change outweigh the costs\n* The scientific evidence points to increasing risks of serious, irreversible impacts from climate change associated with business-as-usual (BAU) paths for emissions.\n** Figure 1 Greenhouse-gas emissions in 2000, by source +++\n<<tiddler "Figure 1">>\n===\n\n** Figure 2 Stabilisation levels and probability ranges for temperature increases +++\n<<tiddler "Figure 2">>\n===\n \n* Climate change threatens the basic elements of life for people around the world - access to water, food production, health, and use of land and the environment.\n* The damages from climate change will accelerate as the world gets warmer.\n* The impacts of climate change are not evenly distributed - the poorest countries and people will suffer earliest and most. And if and when the damages appear it will be too late to reverse the process. Thus we are forced to look a long way ahead.\n* Climate change may initially have small positive effects for a few developed countries, but is likely to be very damaging for the much higher temperature increases expected by mid- to late-century under BAU scenarios.\n* Integrated assessment models provide a tool for estimating the total impact on the economy; our estimates suggest that this is likely to be higher than previously suggested.\n* Emissions have been, and continue to be, driven by economic growth; yet stabilisation of greenhouse-gas concentrations in the atmosphere is feasible and consistent with continued growth.\n** Figure 3 Illustrative emissions paths to stabilise at 550ppm CO~~2~~e +++\n<<tiddler "Figure 3">>\n===\n\n* Achieving these deep cuts in emissions will have a cost. The Review estimates the annual costs of stabilisation at 500-550ppm CO~~2~~e to be around 1% of GDP by 2050 - a level that is significant but manageable.\n* Resource cost estimates suggest that an upper bound for the expected annual cost of emissions reductions consistent with a trajectory leading to stabilisation at 550ppm CO~~2~~e is likely to be around 1% of GDP by 2050.\n* Looking at broader macroeconomic models confirms these estimates.\n** Figure 4 Model cost projections scatter plot: Costs of CO~~2~~ reductions as a fraction of world GDP against level of reduction +++\n<<tiddler "Figure 4">\n===\n\n* The transition to a low-carbon economy will bring challenges for competitiveness but also opportunities for growth.\n* Reducing the expected adverse impacts of climate change is therefore both highly desirable and feasible.\n* Policy to reduce emissions should be based on three essential elements: carbon pricing, technology policy, and removal of barriers to behavioural change.\n* Establishing a carbon price, through tax, trading or regulation, is an essential foundation for climate-change policy.\n* Policies are required to support the development of a range of low-carbon and high-efficiency technologies on an urgent timescale.\n** Figure 5 The costs of technologies are likely to fall over time +++\n<<tiddler "Figure 5">>\n===\n\n* The removal of barriers to behavioural change is a third essential element, one that is particularly important in encouraging the take-up of opportunities for energy efficiency.\n* Adaptation policy is crucial for dealing with the unavoidable impacts of climate change, but it has been under-emphasised in many countries.\n* An effective response to climate change will depend on creating the conditions for international collective action.\n* Creating a broadly similar carbon price signal around the world, and using carbon finance to accelerate action in developing countries, are urgent priorities for international co-operation.\n* Decisions made now on the third phase of the EU ETS provide an opportunity for the scheme to influence, and become the nucleus of, future global carbon markets.\n* Scaling up flows of carbon finance to developing countries to support effective policies and programmes for reducing emissions would accelerate the transition to a low-carbon economy.\n* Greater international co-operation to accelerate technological innovation and diffusion will reduce the costs of mitigation.\n* Curbing deforestation is a highly cost-effective way of reducing greenhouse gas emissions.\n* Adaptation efforts in developing countries must be accelerated and supported, including through international development assistance.\n* Building and sustaining collective action is now an urgent challenge.\n* There is still time to avoid the worst impacts of climate change if strong collective action starts now.\n----\nDownload pdf version of the full Executive Summary\nhttp://www.climate-change-two.net/stern-review/executive-summary.pdf 27pp. (310 Kb)
|>| !Lewcid Extensions |\n|AutoOpenTiddlersPlugin|Automatically open the last 5 tiddlers when TW loads. The number of tiddlers opened can be specifed by the user|\n|BetterTimelineMacro|Replacement for the core timeline macro, with more options and features.|\n|BigThemePack |A collection of Themes for TW, meant for use with SelectThemePlugin |\n|DropTaggingMacro |Dropdown version of core tagging macro |\n|DropTagsMacro |Dropdown version of core tags macro |\n|FontSizePlugin |Resize tiddler text on the fly|\n|FullScreenPlugin|Toggle between viewing tiddlers fullscreen and normally |\n|HoverMenuPlugin|Creates a hovering menu that scrolls with the page and is always accessible |\n|JumpToTopMacro|A macro and a command for jumping to the top of the screen |\n|JumpMacro|macro version of the core jump command, with an optional button to jump to the top of the screen|\n|MenuEditPlugin |Adds 'double click to edit' capabilities to menu's and sidebars |\n|MonkeyTaggerMacro |drop down list that toggles tags tagged by given tag, see demo for better understanding. (aimed at task management) |\n|NavigationMacro |creates Next and Previous buttons to allow navigating through tiddlers in order. |\n|OpenTiddlersMacro |create tiddlyLinks that open multiple tiddlers. |\n|OpenTopPlugin|Open new tiddlers at the top of the screen|\n|PopupMacro |create custom popups with any wiki text. |\n|SaveAndReloadMacro|creates a button that saves and reloads your TW|\n|SelectThemePlugin |On the fly switching between various TW layouts (themes) |\n|SplashScreenPlugin |Displays a splash screen while TW is loading|\n|TabEditPlugin |Easier tab editing - double click to edit source tiddler |\n|TagAdderMacro |Dropdown list for easy toggling of tags - abandoned in favor of TaggerPlugin |\n|TaggerPlugin |Dropdown toggling and management of tiddler tags, your all-in-one plugin for tags |\n|TiddlerWithEditPlugin |Adds double-click-to-edit to the core tiddler macro |\n|ToggleSideBarMacro |Toggle visibility of the sidebar|\n\n|>| !Work in Progress |\n|[[writeItMacro]]| writing dynamic text |\n\n
<html><table bgcolor="#ccecff" width=100% border="1"><tr valign="top"><td><b>Figure 1 Greenhouse-gas emissions in 2000, by source</b><p><center><img src="figure-es-1.jpg"></center>\nTotal emissions in 2002: 42GtCO<sub>2</sub>e\n<p>\nEnergy emissions are mostly CO<sub>2</sub> (some non-CO<sub>2</sub> in industry and other energy related). Non-energy emissions are CO<sub>2</sub> (land use) and non-CO<sub>2</sub> (agriculture and waste).\n<p>\n<i>Source: Prepared by Stern Review, from data drawn from World Resources Institute Climate Analysis Indicators Tool (CAIT) on-line database version 3.0.</i>\n</td></tr></table></html>
<html><table bgcolor="#ccecff" width=100% border="1"><tr valign="top"><td><b>Figure 1.1 Rising levels of greenhouse gases</b><p>The figure shows the warming effect of greenhouse gases (the 'radiative forcing') in terms of the equivalent concentration of carbon dioxide (a quantity known as the CO<sub>2</sub> equivalent). The blue line shows the value for carbon dioxide only. The red line is the value for the six Kyoto greenhouse gases (carbon dioxide, methane, nitrous oxide, PFCs, HFCs and SF6)6 and the grey line includes CFCs (regulated under the Montreal Protocol). The uncertainty on each of these is up to 10%7. The rate of annual increase in greenhouse gas levels is variable year-on-year, but is increasing.\n<p>\n<center><img src="figure-1-1.jpg"></center>\n<p>\n<i>Source: Dr L Gohar and Prof K Shine, Dept. of Meteorology, University of Reading</i>\n</td></tr></table></html>
<html><table bgcolor="#ccecff" width=100% border="1"><tr valign="top"><td><b>Figure 1.2 The Greenhouse Effect</b><p><center><img src="figure-1-2.jpg"></center>\n<p>\n<i>Source: Based on DEFRA (2005)</i>\n</td></tr></table></html>
<html><table bgcolor="#ccecff" width=100% border="1"><tr valign="top"><td><b>Figure 1.3 The Earth has warmed 0.7°C since around 1900.</b><p>The figure below shows the change in global average near-surface temperature from 1850 to 2005. The individual annual averages are shown as red bars and the blue line is the smoothed trend. The temperatures are shown relative to the average over 1861 - 1900.\n<p>\n<center><img src="figure-1-3.jpg"></center>\n<p>\n<i>Source: Brohan et al. (2006)</i>\n</td></tr></table></html>
<html><table bgcolor="#ccecff" width=100% border="1"><tr valign="top"><td><b>Figure 1.4 The link between greenhouse gases and climate change.</b><p><center><img src="figure-1-4.jpg"></center>\n</td></tr></table></html>
<html><table bgcolor="#ccecff" width=100% border="1"><tr valign="top"><td><b>Figure 1.5 Rising probability of heatwaves</b><p>There will be more extreme heat days (relative to today) and fewer very cold days, as the distribution of temperatures shifts upwards. The figure below illustrates the change in frequency of a one-in-ten (blue) and one-in-one-hundred (red) year event. The black arrow shows that if the mean temperature increases by one standard deviation (equal to, for example, only 1°C for summer temperatures in parts of Europe), then the probability of today's one-in-one-hundred year event (such as a severe heatwave) will increase ten-fold. This result assumes that the shape of the temperature distribution will remain constant. However, in many areas, the drying of land is expected to skew the distribution towards higher temperatures, further increasing the frequency of temperature extremes44.\n<p>\n<center><img src="figure-1-5.jpg"></center>\n<p>\n<i>Source: Based on Wigley (1985) assuming normally distributed events.</i>\n</td></tr></table></html>
<html><table bgcolor="#ccecff" width=100% border="1"><tr valign="top"><td><b>Figure 1.6 Consistency of future rainfall estimates</b><p>The figure below indicates the percentage of models (out of a total of 23) that predict that annual rainfall will increase by 2100 (for a warming of around 3.5°C above pre-industrial). Blue shading indicates that most models (>75%) show an increase in annual rainfall, while red shading indicates that most models show a decrease in rainfall. Lightly shaded areas are where models show inconsistent results. The figure shows only the direction of change and gives no information about its scale. In general, there is agreement between most of the models that high latitudes will see increases in rainfall, while much of the subtropics will see reductions in rainfall. Changes in rainfall in the tropics are still uncertain.\n<p>\n<center><img src="figure-1-6.jpg"></center>\n<p>\n<i>Source: Climate Directorate of the National Centre for Atmospheric Science, University of Reading</i>\n</td></tr></table></html>
<html><table bgcolor="#ccecff" width=100% border="1"><tr valign="top"><td><b>Figure 2 Stabilisation levels and probability ranges for temperature increases</b><p>The figure below illustrates the types of impacts that could be experienced as the world comes into equilibrium with more greenhouse gases. The top panel shows the range of temperatures projected at stabilisation levels between 400ppm and 750ppm CO<sub>2</sub>e at equilibrium. The solid horizontal lines indicate the 5 - 95% range based on climate sensitivity estimates from the IPCC 2001<sup>2</sup> and a recent Hadley Centre ensemble study<sup>3</sup>. The vertical line indicates the mean of the 50th percentile point. The dashed lines show the 5 - 95% range based on eleven recent studies<sup>4</sup>. The bottom panel illustrates the range of impacts expected at different levels of warming. The relationship between global average temperature changes and regional climate changes is very uncertain, especially with regard to changes in precipitation (see [[Box 4.2]]). This figure shows potential changes based on current scientific literature.\n<p>\n<center><img src="figure-es-2.jpg"></center>\n</td></tr></table></html>
<html><table bgcolor="#ccecff" width=100% border="1"><tr valign="top"><td><b>Figure 3 Illustrative emissions paths to stabilise at 550ppm CO<sub>2</sub>e.</b><p>The figure below shows six illustrative paths to stabilisation at 550ppm CO<sub>2</sub>e. The rates of emissions cuts given in the legend are the <i>maximum</i> 10-year average rate of decline of global emissions. The figure shows that delaying the peak to the right means that emissions must be reduced more rapidly to achieve the same stabilisation goal. The rate of emissions cuts is also very sensitive to the height of the peak. For example, if emissons peak at 48 GtCO<sub>2</sub> rather that 52GtCO<sub>2</sub> in 2020, the rate of cuts is reduced from 2.5%/yr to 1.5%/yr.\n<p>\n<center><img src="figure-es-3.jpg"></center></html>\n\n//Source: Reproduced by the Stern Review based on Meinshausen, M. (2006): 'What does a 2°C target mean for greenhouse gas concentrations? A brief analysis based on multi-gas emisson pathways and several climate sensitivity uncertainty estimates', in [[Avoiding Dangerous Climate Change]], in H.J. Schellnhuber et al. (eds.), Cambridge: Cambridge University Press, pp.265 - 280.//<html>\n</td></tr></table></html>
<html><table bgcolor="#ccecff" width=100% border="1"><tr valign="top"><td><b>Figure 4 Model cost projections scatter plot: Costs of CO<sub>2</sub> reductions as a fraction of world GDP against level of reduction</b><p><center><img src="figure-es-4.jpg"></center>\n<i>Source: Barker, T., M.S. Qureshi and J. Köhler (2006): 'The costs of greenhouse-gas mitigation with induced technological change: A Meta-Analysis of estimates in the literature', 4CMR, Cambridge Centre for Climate Change Mitigation Research, Cambridge: University of Cambridge.</i>\n<p>\nA broad range of modelling studies, which include exercises undertaken by the IMCP, EMF and USCCSP as well as work commissioned by the IPCC, show that costs for 2050 consistent with an emissions trajectory leading to stabilisation at around 500-550ppm CO<sub>2</sub>e are clustered in the range of -2% to 5% of GDP, with an average around 1% of GDP. The range reflects uncertainties over the scale of mitigation required, the pace of technological innovation and the degree of policy flexibility.\n<p>\nThe figure above uses Barker's combined three-model dataset to show the reduction in annual CO<sub>2</sub> emissions from the baseline and the associated changes in world GDP. The wide range of model results reflects the design of the models and the choice of assumptions included within them, which itself reflects uncertainties and differing approaches inherent in projecting the future. This shows that the full range of estimates drawn from a variety of stabilisation paths and years extends from -4% of GDP (that is, net gains) to +15% of GDP costs, but this mainly reflects outlying studies; most estimates are still centred around 1% of GDP. In particular, the models arriving at higher cost estimates make assumptions about technological progress that are very pessimistic by historical standards.\n</td></tr></table></html>
<html><table bgcolor="#ccecff" width=100% border="1"><tr valign="top"><td><b>Figure 5 The costs of technologies are likely to fall over time</b><p><center><img src="figure-es-5.jpg"></center>\n<p>\nHistorical experience of both fossil-fuel and low-carbon technologies shows that as scale increases, costs tend to fall. Economists have fitted 'earning curves' to costs data to estimate the size of this effect. An illustrative curve is shown above for a new electricity-generation technology; the technology is initially much more expensive than the established alternative, but as its scale increases, the costs fall, and beyond Point A it becomes cheaper. Work by the International Energy Agency and others shows that such relationshps hold for a range of different energy technologies.\n<p>\nA number of factors explain this, including the effects of learning and economies of scale. But the relationshp is more complex than the figure suggests. Step-change improvements in a technology might accelerate progress, while constraints such as the availabilty of land or materials could result in increasing marginal costs.\n</td></tr></table></html>
!!The scientific basis and overall approach of the Review\n''1. Is there a sound scientific basis for the analysis in the Review?''\n\nThe basic science on climate change is very well established. The underlying mechanisms were identified in the 19th century.\n\nThe Review is based on evidence from the [[IPCC Third Assessment Report]], and on recent published science. A summary of recent scientific research may be found in '[[Avoiding Dangerous Climate Change]]'.1\n\nThe science underlying the Review was criticised in [[Byatt et al (2006)]]. We have issued a detailed rebuttal of these arguments in World Economics, April-June 2006, which can be found on our website at: http://www.hm-treasury.gov.uk/media/5E1/FB/stern_reply_worldeconomics.pdf\n\n''2. How does the Review account for the uncertainties in the science?''\n\nThe Review is explicit about the treatment of risk and uncertainty in assessing the impacts of climate change. Indeed, a major feature of the Review is that the economics of risk is placed at the heart of the economics of climate change. The Review has worked with quantitative approaches, drawing on recent peer-reviewed science, in many areas.\n\nOne important area is understanding the link from concentrations to temperature rise. We look at recent scientific evidence on the probabilities of reaching certain temperature thresholds at different stabilisation levels. These probabilities, which have only recently been available, provide a crucial underpinning for the economics of the analysis of risks. The work of a recent Hadley Centre study, and from the IPCC Third Assessment Report, form the basis of this analysis, although we have also looked at other projections, some of which show much higher risks at the upper end.\n\nWe also consider how emissions influence atmospheric concentrations - for example, if carbon sinks weaken, we can afford to emit less to reach the same stabilisation goal.\n\nAnd we look at how temperature feeds through to direct impacts - for example, carbon fertilisation could make a large difference to the impact of temperature rise has on agricultural yields; recent science has been more pessimistic about the extent to which carbon fertilisation would offset temperature effects.\n\n''3. Why are your concentration levels given as CO~~2~~e?''\n\nThe carbon dioxide equivalent (CO~~2~~e) level of greenhouse gases expresses the total warming effect (the radiative forcing) of all Kyoto greenhouse gases in terms of the equivalent concentration of carbon dioxide. By this definition, the current level of greenhouse gases is 430ppm (CO~~2~~e). This level shapes, with future emissions, the impacts. Expressing greenhouse gas levels in terms of only carbon dioxide masks the important contribution to the problem from other gases created by human activities. Throughout the report we often also give levels of CO~~2~~ only.\n\n!!Estimates of the impacts of climate change\n4. How do you analyse the impacts of climate change?\n\nThe foundation of the Review's analysis of impacts is a detailed assessment of the impacts of climate change at different levels of temperature rise. Whilst most studies have focused on levels of warming of around 2 - 3°C above pre-industrial, less is known about how the environment and human society will respond to larger increases in temperature. A warming of 5°C on a global scale - which could well be reached on a scenario of business-as-usual emissions from now to the end of the century - would be far outside the experience of human civilisation.\n\nThe analyses presented in Chapters 3 - 5 of the Review demonstrate the great dangers of allowing temperatures to continue to rise, in terms of environment, the way we live our lives and economic growth. Many of the impacts of climate change increase in severity with temperature. Examples include the damage caused by hurricanes, the frequency of extreme events, effects on agricultural production, and heat-related mortality. Impacts can interact, bringing about rapid increases in damages at high temperatures. An example is that rising levels of pests in some areas may aggravate declines in agricultural production from other causes.\n\nIn addition, current understanding suggests that at high levels of warming, the risks of major, irreversible changes to the climate, ecosystems and society are very real. These include physical changes, such as a collapse of ocean currents, and also the risk of major societal changes, such as mass migrations and political and social instability.\n\nPutting all these impacts together builds a strong picture of impacts rapidly rising with temperatures. High temperatures are likely to generate a hostile and extreme environment for human activity in many parts of the world. From this analysis and looking forward to the estimates of costs of mitigation points to the conclusion that the stabilization range for concentrations of GHGs should be in the range 450-550ppm (CO~~2~~e).\n\nWe also look at ways to estimate the costs at an aggregate level, which are discussed below. They support the above conclusion for the stabilisation range. We should stress, however, that we devote more space and attention to the disaggregated analysis and broad appreciation of risks and judge that these arguments should be the first call on our attention.\n\n''5. How did you get to the 5 - 20% estimate of the damages of climate change?''\n\nWe find that the costs of climate change, averaged over time, over the regions of the world and across a wide range of scenarios, are equivalent to a loss in average world consumption of 5-20% per year averaged over time and possible outcomes.\n\nThese figures were derived using the PAGE model, which we chose because it allows stochastic analysis, and because it covers much of the range of possibilities from earlier models. They are illustrative figures based on a very aggregated model run into the next century and beyond; they should not, as the Review emphasises strongly, be taken too literally.\n\nOur estimate of 5% is based on the climate science presented in the IPCC's Third Assessment Report in 2001. It does not assign any value to the impacts of climate change on human health and the environment.\n\nThe estimates rise as a number of different dimensions of risk and impact are included.\n* The estimate of damages rises to 7% when the model is adjusted to incorporate the possibility of amplifying feedbacks in the climate system (weakened carbon sinks and increased natural methane release). This is just one example from the scientific literature on increased risks published more recently than 2001.\n* The estimate of damages rises to 11% for the original climate assumptions, or to 14% with the increased climate risk, when the economic value of impacts of human health and the environment are included. The Review warns that such valuations should be treated with caution and for the most part in other chapters, looks at disaggregated effects.\n* The estimate of damages is likely to rise again, by more than a quarter, if intra-temporal income inequality is taken into account.\nAs the Review makes clear, the role of integrated assessment models is to give an illustration of the potential effects of climate change. Modelling of the economic impacts of climate change over very long time horizons cannot give precise results. The value of the approach is that it allows the investigation of the role of different specifications of model structure and ethical assumptions. The ethical judgements which have to be examined include those concerning how society should weight impacts on different generations (see question on discounting, below).\n\nThe impacts have been expressed using a technique which allows averaging over time, risk and country in a way that allows us to compare them with the costs of mitigation.\n\nThe Stern Review paper "Modelling the aggregate impacts of climate change", soon to be available from www.sternreview.org.uk, gives a detailed explanation of the methodology used.\n\n''6. Why are your damage estimates higher than some other studies?''\n\nOur estimates of damage from business-as-usual are higher than some previously published for the following reasons3 .\n\nFirst, we treat aversion to risk explicitly - this issue is all about risk. Here, we use economic techniques standard in the economics of risk.\n\nSecond, we use the more recent literature, from the science, on the probabilities, which points to significant risks of temperature increases above 5°C under business-for-usual by the early part of the next century. Previous studies have focused on temperature increases of 2 or 3°C. The damages from 5°C would be very much higher - damages rise much faster than temperature.\n\nThird, we suggest that the ethics of the problem argue against substantial 'pure-time' discounting of the welfare of future generations (see discussion of discounting, below).\n\nFinally, we take account of the disproportionate impacts on poor regions, reflecting the fact that those in poverty will feel losses in income more keenly. Few existing studies include all these factors, and as a result their estimates of the damages tend to be lower. The modelling paper on www.sternreview.org.uk shows that there are some respects in which our assumptions underestimate the damage by others which give lower estimates than the previous literature.\n\nOur illustrative modelling-based estimates are complementary to a more detailed analysis of economic impacts at a disaggregated level, based on the latest science and on research commissioned for the Review. This disaggregated work forms the basis of our conclusions, which are then reinforced by the model estimates.\n\n''7. Do your damage estimates take account of adaptation?.''\n\nIn Part II of the report, estimates of the costs assume individual-level actions to reduce damages from climate change (autonomous adaptation), but little policy intervention on adaptation. All figures are presented on this basis in Part II. In Part V, we consider how adaptation policies could reduce the costs of climate change.\n\n''8. What discount rate do you use?''\n\nThe decision on discounting depends on two factors: first, how to take into account the fact that people are likely to be richer in the future; and second, whether the future should be discounted simply because it is the future.\n\nWe discount in the standard way to allow the possibility that people will have higher consumption in the future. Climate change implies that strongly divergent paths for future growth are possible. The use of a single set of discount rates for all paths is inappropriate when looking at non-marginal changes.\n\nThe degree of discounting depends on attitudes to income distribution, which are captured by the elasticity of the marginal utility of consumption. We use an elasticity of one, in line with some empirical estimates. For this case, the contribution to the discount rate is equal to the rate of growth of consumption of the path. This reflects an assumption that society is moderately averse to income inequality and therefore is more worried about adverse impacts that fall on poorer generations. If society were more strongly averse to income inequality, it would be appropriate to use a higher multiple of the average growth rate.\n\nIn addition, we carefully examine the case for discounting the future just because it is the future - which in economic terms is known as pure time preference. This requires a consideration of the ethical issues involved in comparing the incidence of costs and benefits between generations, some of which are distant in time. We argue - in line with economists including Ramsey, Sen, Pigou and Solow - that the welfare of future generations should be treated on a par with our own. This means that the only justification for a positive rate of pure time preference in assessing the impacts of climate change is the possibility that the human race may be extinguished. As the possibility of this happening is low, we assume a low rate of pure time preference, 0.1%, which corresponds with a 90% probability of humanity surviving a 100-year period. Higher probabilities of survival would imply a still lower rate. There are other approaches to pure time discounting and references are given in the Review (Chapter 2 and the appendix) and in the "Modelling Paper" on www.sternreview.org.uk.\n\nThe average discount rate used in the modelling exercise is then the combination of these two elements: the average growth rate over the relevant time horizon for the particular path being examined (in the case where the elasticity of the marginal utility of consumption is one), plus the 0.1% pure rate of time preference.\n\nMany previous studies have used higher rates of pure time preference, which are similar to those used for evaluating other kinds of investments. However, we argue that this disinvestment in the environment cannot be considered in, say, the same way as an economist would consider an investment in a railway. A railway can be replaced or redesigned, it can become obsolete or redundant. In other words, the probability of survival depends on the context. In this case the context is that of the whole planet.\n\n''9. What is your estimate of the social cost of carbon?''\n\nThe Review makes a calculation of the damage done over time (suitably discounted) by a tonne of CO~~2~~ emitted this year, if the world continues on a business-as-usual scenario. Economists call such estimates the 'social cost of carbon' (SCC). It reflects the model used to assess damages over time and the economic and ethical judgements made about parameter settings.\n\nWe first estimate the SCC for a scenario of unmitigated climate change, where the loss of consumption expressed per year, averaging over time and over different possible outcomes, lies in the middle of the 5-20% loss of global consumption explained above. In this case, the SCC is $85/tCO~~2~~ (and rising over time). This is higher than many estimates in the literature, because of our approach to discounting, risk aversion, and the latest science.\n\nIf the world achieves stabilisation at a level that reduces the risks and damages of climate change, the SCC will be much lower, perhaps $25-30/tCO~~2~~, now and rising over time. This is a better indication of the level of the carbon price that could be needed to implement climate-change policy, assuming that effective global policy action is taken. This underlines that estimates of the SCC must be specific about the path being considered - different paths have different SCCs. This also emphasizes the strong link between the SCC and the emissions path assumed.\n\n!!Estimates of the costs of mitigation\n''10. What is your estimate of the cost of stabilising the climate?''\n\nThe Stern Review estimates that the cost of reducing emissions along a path consistent with stabilisation at 550ppm CO~~2~~e or below will be in the region of 1% of GDP by the middle of this century, with a range of plus or minus 3% around this central estimate. This figure reflects estimates from both a technology-based resource-cost approach carried out for the Stern Review by Dennis Anderson and an analysis of a range of results from large-scale economic models.\n\nThe range of estimates reflects uncertainties over factors such as the pace of technological change and the evolution of fossil-fuel extraction costs, as well as the degree of flexibility in exploiting low-cost mitigation options internationally. The costs are likely to be in the higher end of the range if policy is poorly applied across the world, or the stabilisation target is more ambitious.\n\nThe costs represent a one-off increase in the cost or price index of around 1%, primarily from adjustments in the use of energy. This means that there is no reason why strong mitigation should curtail growth. Thus we can be 'green' and grow. On the other hand unmitigated climate change will eventually derail growth.\n\n''11. How should a cost of 1% of GDP be interpreted?''\n\nOur estimates suggest that the costs would rise to around 1% of GDP by the middle of the century.\n\nGlobal GDP is currently around $35 trillion, so if the full 1% were applied to the current period, it would imply around $350 billion in costs. Global GDP is likely to be around $100 trillion by 2050, so this would mean annual costs in the order of $1 trillion by then.\n\nThese costs are not trivial in absolute terms, but they will not disrupt economic growth. The overall impact can be thought of as equivalent to a one-off increase in the average price level of 1%. Since it may be interpreted as a cost or price index we should see the 1% as applying to either consumption or income.\n\nThe costs of inaction would be likely to be much more significant in terms of damage to the world economy.\n\n''12. How will the costs of tackling climate change be distributed around the world and between sectors?''\n\nThe cost may be unevenly distributed amongst countries. For equity reasons, rich countries may at least initially need to take on more of the costs. For illustration, if the costs of mitigation are 1% of global GDP, then if the rich countries agreed to pay 20% more in the initial decades (1.2% of GDP), then this would allow poorer countries - accounting for 80% of the world's population - to pay only 0.2% of GDP.\n\nIf some countries take action that is much more significant than others over long periods of time, this may lead to impacts on the competitiveness of some firms or sectors, particularly in energy-intensive industries. It is important to use quantitative analysis to assess the size of these impacts, and to find ways to reduce the problems. If all countries act in a broadly similar way, there will be no impact on competitiveness or on firms' decisions to invest in particular locations. For some industries, a global sectoral agreement in advance of a broader international agreement could offer opportunities to co-ordinate efficient and effective action.\n\nTaking no action to reduce emissions will also penalise some sectors more than others - for example, as the climate changes the spatial distribution of tourism and agriculture. \n\n''13, What modelling estimates did you take account of?''\n\nWe examined a very broad range of modelling studies, which includes exercises undertaken by the Energy Modelling Forum (EMF) and US Climate Change Science Program (USCCSP) as well as work commissioned by the Intergovernmental Panel on Climate Change (IPCC). Taken together, the studies suggest the expected annual cost of achieving emissions reductions, consistent with an emissions trajectory leading to stabilisation at around 500-550ppm CO~~2~~e, are likely to be around 1% of GDP by 2050, if policies are sensible and stimulate the required technological advances.\n\nWe also commissioned Terry Barker to undertake a detailed 'meta-analysis' using a combined three-model dataset. These mostly reaffirmed the findings of other studies, with estimates for 2050 clustered in the range -2 to 5% of GDP. The full range of estimates drawn from a variety of stabilisation paths and years extends from -4% of GDP (that is, net gains) to +15% of GDP costs. However, we judged many of the outlying estimates to be either inapplicable at the global level, or inconsistent with the historical evidence (particularly on the likely evolution of the costs of technologies).\n\n''14. Do you take account of co-benefits ("win-wins") in other areas such as reduced air pollution?''\n\nOur central estimate on the basis of resource costs of lower-carbon technologies of 1% does not take account of co-benefits, for example in terms of reduced ill health and environmental damage from air pollution and increased energy security.\n\nSome of the macro-models do build in estimates of these co-benefits. These models find that co-benefits can be valued at up to 1% of GDP.\n\n''15. Do you account for the costs of climate-change damages that will occur even if action is taken to reduce emissions?''\n\nThe Review makes it clear that mitigation at 450-550ppm CO~~2~~e will not remove all the risks from climate change. But our assessments of the cost of action reflect the net damages we can avoid by going from business-as-usual to 550ppm CO~~2~~e.\n\nOur disaggregated analysis of impacts suggests that damages and risks rise more rapidly than temperatures. Stabilising at or below 550ppm reduces the chances of temperature rises of 4 to 5°C and above, at which levels some of the worst impacts occur, and therefore reduces the risks very significantly.\n\nAs an illustrative example of the scale of this effect, we give the PAGE estimate of costs at 550ppm as a 1.1% reduction in consumption, now and forever, on a "broad impacts, standard climate sensitivity" case. This is about ten times lower than the corresponding "business as usual" case (11%). Stabilisation at 450ppm CO~~2~~e would reduce this estimate to 0.6%.\n\nWe also take account of the fact that spending more on adaptation can reduce the impacts of climate change and should be part of the policy response.\n\n''16. How do your cost estimates compare with those of the IPCC?''\n\nThe IPCC Fourth Assessment Report is still work in progress, and no numbers from it have been published. However, we are confident that they will publish a range for mitigation costs next year in which our range will be centrally placed.\n\n!!Adaptation\n''17. Isn't adaptation a more cost effective response than mitigation?''\n\nAdaptation is a critical part of the response to climate change, not least because the world is already locked into further temperature rises over the coming decades as a consequence of past emission reductions.\n\nHowever, whilst adaptation is necessary and sensible is not a cheap option. The costs of making new infrastructure and buildings more resilient in OECD countries are difficult to estimate but we indicate, on the basis of previous studies, a range of $15-150 billion each year, even for lower levels of temperature increase. Adaptation in developing countries is likely to cost tens of billions of dollars a year, according to the World Bank.\n\nAnd adaptation can only mute the impacts of climate change; there are limits to what it can achieve. Impacts on ecosystems, for instance, may be impossible to avoid. This is particularly true at higher levels of temperature increase, where the impacts will be more severe, and the risks of abrupt irreversible impacts higher. Mitigation is the only way to reduce these risks.\n\n18. Economic growth will increase the resilience of poor people to climate change. Isn't development the best solution?\n\nEconomic development brings the diversification, flexibility and human capital that are crucial components of adaptation to the adverse impacts of climate change. However, in the absence of action to control emissions, greenhouse gases will quickly reach concentrations that pose real and large risks for developed and developing countries alike. And in the absence of strong mitigation policies, the private sector will have little incentive to deliver the low-carbon technologies that will inevitably be needed to cut emissions in the future.\n\nAction to mitigate climate change can be taken at significant, but manageable, costs. It will not cap the aspirations for growth of rich or poor countries.\n\nAt the same time, good development practice supports adaptation to reduce the risks of the climate change that can no longer be avoided, - for example, promoting overall development, better disaster management and emergency response arrangements, researching more climate-resilient crops and taking steps to eradicate malaria and other vector-borne diseases.\n\nThe scale of the challenge and the necessary costs of adaptation make it more urgent than ever for developed countries to honour their existing commitments to double aid flows by 2010 - made in Monterrey in 2002, and strengthened at EU Councils in June 2005 and at the July 2005 G8 Gleneagles Summit.\n\n!!International action\n''19. How can the climate change be tackled if the larger countries take no action?''\n\nAll countries will have to play a part in tackling climate change. The larger countries are already taking significant steps. The EU has taken the lead in establishing the world's largest cross-border emissions trading scheme, which is already providing a market to encourage investment in low-carbon options in Europe and in the developing world. China's 11th Five Year Plan contains a very ambitious goal to reduce the energy intensity of output by 20% from 2006-2011, and India is also placing increased emphasis on renewable energy and energy efficiency. The US is investing in R&D, and some states are going further including through support for the deployment of renewable energy and through the use of emissions trading.\n\nThe challenge is to build on diverse national circumstances and approaches, and to create international links that allow the problem to be tackled in the most cost-effective way. There are opportunities to reduce the costs of mitigation through international co-operation, for example through emissions trading, through pooling investments in larger R&D projects, through co-operation to create larger markets for the deployment of lower carbon technologies, and through the international co-ordination of product standards.\n\n''20. Rich countries are responsible for past emissions but poor countries are hardest hit. How should international action tackle the problems of the poorest countries?''\n\nThose countries responsible for the stock of greenhouse gases in the atmosphere now have a responsibility to help the poorest countries to adapt to climate change. Adaptation to climate change will increase pressure on already scarce resources.\n\nInternational action to support adaptation includes support for good development practice, and it is important that rich countries honour the commitments they have made to double aid flows by 2010. There are also specific areas where international co-operation is relevant - including research into new crop varieties, better climate data and regional modelling of impacts.\n\nInternational action to reduce emissions is also essential to protect all countries from even greater risks of climate impacts. Emissions trading is a powerful way to promote co-operation with between rich countries and the growing economies that have relatively cheap opportunities to cut emissions. The Clean Development Mechanism is already channelling some investment to developing countries, and these flows should be transformed and scaled up.\n\nAccess to energy for the poorest countries is also an important component of development. The Clean Energy Investment Frameworks developed by the World Bank and Regional Development Banks provide a key opportunity to expand access to clean energy for the poor.\n\n!!Specific questions\n''21. You state the cost of US hurricanes at temperatures of 3°C above pre-industrial levels as 0.13% and 1.3% of US GDP in different places in the report. Which is correct?''\n\nThe correct figure is 0.13%. There is an error in Chapter 5, pg. 139, which cites the cost as 1.3%. An Errata page will be published to cover this and any other typographical errors.\n\n''22. Are your estimates of the cost of flooding in the UK consistent with the Government's own estimates?''\n\nIn Part II of the report, estimates of the costs of UK flooding are cited from a UK government study, stating that the cost of flood damage could rise from 0.1% of GDP to 0.2 - 0.4% if global temperatures rise by 3 - 4°C. This assumes no policy intervention on adaptation. All figures are presented on this basis in Part II to demonstrate the scale of potential damages with no policy intervention. In Part V, we consider how adaptation policies could reduce the costs of climate change. Here, we refer to one study that shows that the costs globally of sea level rise could be brought down substantially if appropriate adaptation policies are put in place. This demonstrates the importance of adaptation.\nAbout the Review\n\n''23. Where can I get a copy of the Stern Review?''\n\nThe Stern Review was web published on 30 October, and can be downloaded at www.sternreview.org.uk.\n\nHard copies will be available from January at a charge of c. £29.99 + £3.50 postage and packing (quoting ISBN number: 0-521-70080-9). Copies can be ordered from Cambridge University Press via the website: http://www.cambridge.org/9780521700801 by fax on +44.1223.315052 or post from the following address: Science Marketing, Freepost, Cambridge University Press, The Edinburgh Building, Cambridge, CB2.\n\n''24. How can I contact the Review team?''\n\nPlease email any enquiries to [[sterninvites@hm-treasury.gsi.gov.uk|mailto:sterninvites@hm-treasury.gsi.gov.uk]].\n\nWe would be very grateful if readers could notify us of any typographical or other errors in the Review.\n\nThere is also a telephone number for media enquiries: +44.207.270.6280.\n\n''25. Will you respond to comments made on the Review?''\n\nA brief paper responding to some of the issues raised has been included as a [[postscript|Postscript]] to the Review.\n\n!!Notes\n1. '[[Avoiding Dangerous Climate Change]]', ed Schellnhuber (2006). Cambridge University Press\n\n2. The Stern Review 'OXONIA Papers': A critique: Ian Byatt, Ian Castles, David Henderson, Nigel Lawson, Ross McKitrick, Julian Morris, Alan Peacock, Colin Robinson & Robert Skidelsky, World Economics, April-June 2006. Available at http://www.policynetwork.net/uploaded/pdf/byatt-etal-stern-critique-2006.pdf\n\n3. Again see the Stern Review paper 'Modelling the aggregate impacts of climate change', available from www.sternreview.org.uk for further detail.
To get started with this blank TiddlyWiki, you'll need to modify the following tiddlers:\n* SiteTitle & SiteSubtitle: The title and subtitle of the site, as shown above (after saving, they will also appear in the browser title bar)\n* MainMenu: The menu (usually on the left)\n* DefaultTiddlers: Contains the names of the tiddlers that you want to appear when the TiddlyWiki is opened\nYou'll also need to enter your username for signing your edits: <<option txtUserName>>
This set of tiddlers allows you to edit and manage the title and sub-title of the page, and key information about the page; Others are easily read by browsers in particular, information that it is valuable to make available to Internet search engines. The first of these two are visible to the viewer - in the browser window, and in the banner at the top of the page.the others are read by search engines and browsers, but are only visible to the reader if she or he looks at the source code af a web page\n* [[Site Title|SiteTitle]] - appears at the head of the page banner, and the \n* [[Site Subtitle|SiteSubtitle]] - included in the browser bar and search results and at the bottom right of the site banner\n* [[MarkupPreHead]] - this contents of this shadowed tiddler contains the concatenation of information - each of them representing a "meta tag". Ideally, this tiddler would use the syntax- using the syntax {{{<<tiddler "Site Keywords">>}}}, etc.\n** [[Site Keywords]] - a list of comma-separated keywords, also a first read for search engines\n** [[Site Description]] - a concise description of the site, stored in the HEAD of the HTML page, and is generally one of the first items to be read by intelligent search engines. As a rule, it should not be more that 256 characters, or about 40 words.\n>>>Each of these tiddlers contains what is known as a "meta tag", e,.g.\n<<<\n>> {{{<meta name="description" content="Climate Change 2.0: A convenient TiddlyPerfect response to Truth in a rapidly-changing Creative Commons, Open Source Climate">}}} \n<<<\n** [[Site Owner]] - this tiddler records the ownership of the page itself: not to be confused with the various copyrights associated with the page, included in the tiddler that follows\n** [[Site Copyrights]] - this tiddler provides attribution to the rights holders \n** [[Site Url|SiteUrl]] - this tiddler conytains the Url of the site, e.g. http:///climate-change-two.net\n** [[Site Splash Screen]] - this page contains the HTML tags for the Splash Screen that appears when the page is opened,\n>> //Technical note//: In a TiddlyPerfect site, this tiddler would be automatically generated by the DataPerfect engine from its sub-tiddlers - using the syntax:\n>>> {{{<<tiddler "Site Keywords">>}}},\n>>> {{{<<tiddler "Site Decription">>}}}, etc.\n>> under TiddlyWiki, this does not work, as the contents of the tiddler would not be readable by the browser, not having been translated - wikified - until the relevant javascript in TiddlyWiki had been loaded.
/***\n| Name:|HideWhenPlugin|\n| Description:|Allows conditional inclusion/exclusion in templates|\n| Version:|6.1.2|\n| Date:|20-Oct-2006|\n| Source:|http://mptw.tiddlyspot.com/#HideWhenPlugin|\n| Author:|Simon Baird <simon.baird@gmail.com>|\nFor use in ViewTemplate and EditTemplate. Eg\n{{{<div macro="showWhenTagged Task">[[TaskToolbar]]</div>}}}\n{{{<div macro="showWhen tiddler.modifier == 'BartSimpson'"><img src="bart.gif"/></div>}}}\n***/\n//{{{\n\nwindow.removeElementWhen = function(test,place) {\n if (test) {\n removeChildren(place);\n place.parentNode.removeChild(place);\n }\n};\n\nmerge(config.macros,{\n\n hideWhen: { handler: function(place,macroName,params,wikifier,paramString,tiddler) {\n removeElementWhen( eval(paramString), place);\n }},\n\n showWhen: { handler: function(place,macroName,params,wikifier,paramString,tiddler) {\n removeElementWhen( !eval(paramString), place);\n }},\n\n hideWhenTagged: { handler: function (place,macroName,params,wikifier,paramString,tiddler) {\n removeElementWhen( tiddler.tags.containsAll(params), place);\n }},\n\n showWhenTagged: { handler: function (place,macroName,params,wikifier,paramString,tiddler) {\n removeElementWhen( !tiddler.tags.containsAll(params), place);\n }},\n\n hideWhenTaggedAny: { handler: function (place,macroName,params,wikifier,paramString,tiddler) {\n removeElementWhen( tiddler.tags.containsAny(params), place);\n }},\n\n showWhenTaggedAny: { handler: function (place,macroName,params,wikifier,paramString,tiddler) {\n removeElementWhen( !tiddler.tags.containsAny(params), place);\n }},\n\n hideWhenExists: { handler: function(place,macroName,params,wikifier,paramString,tiddler) {\n removeElementWhen( store.tiddlerExists(params[0]) || store.isShadowTiddler(params[0]), place);\n }},\n\n showWhenExists: { handler: function(place,macroName,params,wikifier,paramString,tiddler) {\n removeElementWhen( !(store.tiddlerExists(params[0]) || store.isShadowTiddler(params[0])), place);\n }}\n\n});\n\n//}}}\n\n
<<top>>\n<<jump j '' top>>\n<<fullscreen>>\n\n<<fontSize>>\n\n\n\n<<saveChanges>><<renameButton s 'Save TiddlyWiki'>>\n<<newTiddler>><<renameButton n>>\n
{{{\n[img[title|filename]]\n[img[filename]]\n[img[title|filename][link]]\n[img[filename][link]]\n}}}\nImages can be included by their filename or full URL. It's good practice to include a title for the image to be shown as a tooltip, and when the image isn't available. An image can also link to another tiddler or or a URL, e.g.\n[img[Twin Light & Colour Cube|http://www.climate-change-two.net/light-cube-0-075.png][Twin Light & Colour Cubes]]\n{{{\n[img[Twin Light & Colour Cube|http://www.climate-change-two.net/light-cube-0-075.png][Twin Light & Colour Cubes]]\n}}}\n\nYou can also float images to the right or left: use {{{[<img[}}} for left-floating images and {{{[>img[}}} for right-floated images; you can use CSS to clear the floats.\n[<img[Twin Light & Colour Cube - floating left|http://www.climate-change-two.net/light-cube-1-075.png][http://www.digital-bridges.net/]] [>img[Twin Light & Colour Cube - floating right|http://www.climate-change-two.net/light-cube-0-075.png][http://www.digital-bridges.net/]]\n@@clear(left):clear(right):display(block):@@\n{{{\n[<img[Twin Light & Colour Cube - floated left|http://www.climate-change-two.net/light-cube-1-075.png][http://www.digital-bridges.net/]]\n[>img[Twin Light & Colour Cube - floated right|http://www.climate-change-two.net/light-cube-0-075.png][http://www.digital-bridges.net/]]\n@@clear(left):clear(right):display(block):@@\n}}}
The ''~ImportTiddlers'' built-in macro allows you to import Tiddlers from TiddlyWiki eveywhere & to build your collection of Tiddlers.\n\n<<importTiddlers inline>>
<<importTiddlers inline>>
/***\n|''Name:''|ImportTiddlersPlugin|\n|''Source:''|http://www.TiddlyTools.com/#ImportTiddlersPlugin|\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\nWhen many people share and edit copies of the same TiddlyWiki document, the ability to quickly collect all these changes back into a single, updated document that can then be redistributed to the entire group is very important. It can also be very extremely helpful when moving your own tiddlers from document to document (e.g., when upgrading to the latest version of TiddlyWiki, or 'pre-loading' your favorite stylesheets into a new 'empty' TiddlyWiki document.)\n\nThis plugin lets you selectively combine tiddlers from any two TiddlyWiki documents. An interactive control panel lets you pick a document to import from, and then select which tiddlers to import, with prompting for skip, rename, merge or replace actions when importing tiddlers that match existing titles. Automatically add tags to imported tiddlers so they are easy to find later on. Generates a detailed report of import 'history' in ImportedTiddlers.\n!!!!!Interactive interface\n<<<\n{{{<<importTiddlers>>}}}\ncreates "import tiddlers" link. click to show/hide import control panel\n\n{{{<<importTiddlers inline>>}}}\ncreates import control panel directly in tiddler content\n\n<<importTiddlers inline>>\n\nPress ''[browse]'' to select a TiddlyWiki document file to import. You can also type in the path/filename or a remote document URL (starting with http://)and press ''[open]''. //Note: There may be some delay to permit the browser time to access and load the document before updating the listbox with the titles of all tiddlers that are available to be imported.//\n\nSelect one or more titles from the listbox (hold CTRL or SHIFT while clicking to add/remove the highlight from individual list items). You can press ''[select all]'' to quickly highlight all tiddler titles in the list. Use the ''[-]'', ''[+]'', or ''[=]'' links to adjust the listbox size so you can view more (or less) tiddler titles at one time. When you have chosen the tiddlers you want to import and entered any extra tags, press ''[import]'' to begin copying them to the current TiddlyWiki document.\n\n''select: all, new, changes, or differences''\n\nYou can click on ''all'', ''new'', ''changes'', or ''differences'' to automatically select a subset of tiddlers from the list. This makes it very quick and easy to find and import just the updated tiddlers you are interested in:\n>''"all"'' selects ALL tiddlers from the import source document, even if they have not been changed.\n>''"new"'' selects only tiddlers that are found in the import source document, but do not yet exist in the destination document\n>''"changes"'' selects only tiddlers that exist in both documents but that are newer in the source document\n>''"differences"'' selects all new and existing tiddlers that are different from the destination document (even if destination tiddler is newer)\n\n''Import Tagging:''\n\nTiddlers that have been imported can be automatically tagged, so they will be easier to find later on, after they have been added to your document. New tags are entered into the "add tags" input field, and then //added// to the existing tags for each tiddler as it is imported.\n\n''Skip, Rename, Merge, or Replace:''\n\nWhen importing a tiddler whose title is identical to one that already exists, the import process pauses and the tiddler title is displayed in an input field, along with four push buttons: ''[skip]'', ''[rename]'', ''[merge]'' and ''[replace]''.\n\nTo bypass importing this tiddler, press ''[skip]''. To import the tiddler with a different name (so that both the tiddlers will exist when the import is done), enter a new title in the input field and then press ''[rename]''. Press ''[merge]'' to combine the content from both tiddlers into a single tiddler. Press ''[replace]'' to overwrite the existing tiddler with the imported one, discarding the previous tiddler content.\n\n//Note: if both the title ''and'' modification date/////time match, the imported tiddler is assumed to be identical to the existing one, and will be automatically skipped (i.e., not imported) without asking.//\n\n''Import Report History''\n\nWhen tiddlers are imported, a report is generated into ImportedTiddlers, indicating when the latest import was performed, the number of tiddlers successfully imported, from what location, and by whom. It also includes a list with the title, date and author of each tiddler that was imported.\n\nWhen the import process is completed, the ImportedTiddlers report is automatically displayed for your review. If more tiddlers are subsequently imported, a new report is //added// to ImportedTiddlers, above the previous report (i.e., at the top of the tiddler), so that a reverse-chronological history of imports is maintained.\n\nIf a cumulative record is not desired, the ImportedTiddlers report may be deleted at any time. A new ImportedTiddlers report will be created the next time tiddlers are imported.\n\nNote: You can prevent the ImportedTiddlers report from being generated for any given import activity by clearing the "create a report" checkbox before beginning the import processing.\n\n<<<\n!!!!!non-interactive 'load tiddlers' macro\n<<<\nUseful for automated installation/update of plugins and other tiddler content.\n\n{{{<<loadTiddlers "label:load tiddlers from %0" http://www.tiddlytools.com/example.html confirm>>}}}\n<<loadTiddlers "label:load tiddlers from %0" http://www.tiddlytools.com/example.html confirm>>\n\nSyntax:\n{{{<<loadTiddlers label:text prompt:text filter source quiet confirm>>}}}\n\n''label:text'' and ''prompt:text''\n>defines link text and tooltip (prompt) that can be clicked to trigger the load tiddler processing. If a label is NOT provided, then no link is created and loadTiddlers() is executed whenever the containing tiddler is rendered.\n''filter'' (optional) determines which tiddlers will be automatically selected for importing. Use one of the following keywords:\n>''"all"'' retrieves ALL tiddlers from the import source document, even if they have not been changed.\n>''"new"'' retrieves only tiddlers that are found in the import source document, but do not yet exist in the destination document\n>''"changes"'' retrieves only tiddlers that exist in both documents for which the import source tiddler is newer than the existing tiddler\n>''"updates"'' retrieves both ''new'' and ''changed'' tiddlers (this is the default action when none is specified)\n>''"tiddler:~TiddlerName"'' retrieves only the specific tiddler named in the parameter.\n>''"tag:text"'' retrieves only the tiddlers tagged with the indicated text.\n''source'' (required) is the location of the imported document. It can be either a local document path/filename in whatever format your system requires, or a remote web location (starting with "http://" or "https://")\n>use the keyword ''ask'' to prompt for a source location whenever the macro is invoked\n''"quiet"'' (optional)\n>supresses all status message during the import processing (e.g., "opening local file...", "found NN tiddlers..." etc). Note that if ANY tiddlers are actualy imported, a final information message will still be displayed (along with the ImportedTiddlers report), even when 'quiet' is specified. This ensures that changes to your document cannot occur without any visible indication at all.\n''"confirm"'' (optional)\n>adds interactive confirmation. A browser message box (OK/Cancel) is displayed for each tiddler that will be imported, so that you can manually bypass any tiddlers that you do not want to import.\n<<<\n!!!!!Installation\n<<<\ncopy/paste the following tiddlers into your document:\n''ImportTiddlersPlugin'' (tagged with <<tag systemConfig>>)\n\ncreate/edit ''SideBarOptions'': (sidebar menu items) \n^^Add "< < ImportTiddlers > >" macro^^\n\n''Quick Installation Tip #1:''\nIf you are using an unmodified version of TiddlyWiki (core release version <<version>>), you can get a new, empty TiddlyWiki with the Import Tiddlers plugin pre-installed (''[[download from here|TW+ImportExport.html]]''), and then simply import all your content from your old document into this new, empty document.\n<<<\n!!!!!Revision History\n<<<\n''2006.10.12 [3.0.8]'' in readTiddlersFromHTML(), fallback to find end of store area by matching "/body" when POST-BODY-START is not present (backward compatibility for older documents)\n''2006.09.10 [3.0.7]'' in readTiddlersFromHTML(), find end of store area by matching "POST-BODY-START" instead of "/body" \n''2006.08.16 [3.0.6]'' Use higher-level store.saveTiddler() instead of store.addTiddler() to avoid conflicts with ZW and other adaptations that hijack low-level tiddler handling. Also, in CreateImportPanel(), no longer register notify to "refresh listbox after every tiddler change" (left over from old 'auto-filtered' list handling). Thanks to Bob McElrath for report/solution.\n''2006.07.29 [3.0.5]'' added noChangeMsg to loadTiddlers processing. if not 'quiet' mode, reports skipped tiddlers.\n''2006.04.18 [3.0.4]'' in loadTiddlers.handler, fixed parsing of "prompt:" param. Also, corrected parameters mismatch in loadTiddlers() callback function definition (order of params was wrong, resulting in filters NOT being applied)\n''2006.04.12 [3.0.3]'' moved many display messages to macro properties for easier L10N translations via 'lingo' definitions.\n''2006.04.12 [3.0.2]'' additional refactoring of 'core candidate' code. Proposed API now defines "loadRemoteFile()" for XMLHttpRequest processing with built in fallback for handling local filesystem access, and readTiddlersFromHTML() to process the resulting source HTML content.\n''2006.04.04 [3.0.1]'' in refreshImportList(), when using [by tags], tiddlers without tags are now included in a new "untagged" psuedo-tag list section\n''2006.04.04 [3.0.0]'' Separate non-interactive {{{<<importTiddlers...>>}}} macro functionality for incorporation into TW2.1 core and renamed as {{{<<loadTiddlers>>}}} macro. New parameters for loadTiddlers: ''label:text'' and ''prompt:text'' for link creation, ''ask'' for filename/URL, ''tag:text'' for filtering, "confirm" for accept/reject of individual inbound tiddlers. Also, ImportedTiddlers report generator output has been simplified and "importReplace/importPublic" tags and associated "force" param (which were rarely, if ever, used) has been dropped.\n''2006.03.30 [2.9.1]'' when extracting store area from remote URL, look for "</body>" instead of "</body>\sn</html>" so it will match even if the "\sn" is absent from the source.\n''2006.03.30 [2.9.0]'' added optional 'force' macro param. When present, autoImportTiddlers() bypasses the checks for importPublic and importReplace. Based on a request from Tom Otvos.\n''2006.03.28 [2.8.1]'' in loadImportFile(), added checks to see if 'netscape' and 'x.overrideMimeType()' are defined (IE does *not* define these values, so we bypass this code)\nAlso, when extracting store area from remote URL, explicitly look for "</body>\sn</html>" to exclude any extra content that may have been added to the end of the file by hosting environments such as GeoCities. Thanks to Tom Otvos for finding these bugs and suggesting some fixes.\n''2006.02.21 [2.8.0]'' added support for "tiddler:TiddlerName" filtering parameter in auto-import processing\n''2006.02.21 [2.7.1]'' Clean up layout problems with IE. (Use tables for alignment instead of SPANs styled with float:left and float:right)\n''2006.02.21 [2.7.0]'' Added "local file" and "web server" radio buttons for selecting dynamic import source controls in ImportPanel. Default file control is replaced with URL text input field when "web server" is selected. Default remote document URL is defined in SiteURL tiddler. Also, added option for prepending SiteProxy URL as prefix to remote URL to mask cross-domain document access (requires compatible server-side script)\n''2006.02.17 [2.6.0]'' Removed "differences only" listbox display mode, replaced with selection filter 'presets': all/new/changes/differences. Also fixed initialization handling for "add new tags" so that checkbox state is correctly tracked when panel is first displayed.\n''2006.02.16 [2.5.4]'' added checkbox options to control "import remote tags" and "keep existing tags" behavior, in addition to existing "add new tags" functionality.\n''2006.02.14 [2.5.3]'' FF1501 corrected unintended global 't' (loop index) in importReport() and autoImportTiddlers()\n''2006.02.10 [2.5.2]'' corrected unintended global variable in importReport().\n''2006.02.05 [2.5.1]'' moved globals from window.* to config.macros.importTiddlers.* to avoid FireFox 1.5.0.1 crash bug when referencing globals\n''2006.01.18 [2.5.0]'' added checkbox for "create a report". Default is to create/update the ImportedTiddlers report. Clear the checkbox to skip this step.\n''2006.01.15 [2.4.1]'' added "importPublic" tag and inverted default so that auto sharing is NOT done unless tagged with importPublic\n''2006.01.15 [2.4.0]'' Added support for tagging individual tiddlers with importSkip, importReplace, and/or importPrivate to control which tiddlers can be overwritten or shared with others when using auto-import macro syntax. Defaults are to SKIP overwriting existing tiddlers with imported tiddlers, and ALLOW your tiddlers to be auto-imported by others.\n''2006.01.15 [2.3.2]'' Added "ask" parameter to confirm each tiddler before importing (for use with auto-importing)\n''2006.01.15 [2.3.1]'' Strip TW core scripts from import source content and load just the storeArea into the hidden IFRAME. Makes loading more efficient by reducing the document size and by preventing the import document from executing its TW initialization (including plugins). Seems to resolve the "Found 0 tiddlers" problem. Also, when importing local documents, use convertUTF8ToUnicode() to convert the file contents so support international characters sets.\n''2006.01.12 [2.3.0]'' Reorganized code to use callback function for loading import files to support event-driven I/O via an ASYNCHRONOUS XMLHttpRequest. Let's processing continue while waiting for remote hosts to respond to URL requests. Added non-interactive 'batch' macro mode, using parameters to specify which tiddlers to import, and from what document source. Improved error messages and diagnostics, plus an optional 'quiet' switch for batch mode to eliminate //most// feedback.\n''2006.01.11 [2.2.0]'' Added "[by tags]" to list of tiddlers, based on code submitted by BradleyMeck\n''2006.01.09 [2.1.1]'' When a URL is typed in, and then the "open" button is pressed, it generates both an onChange event for the file input and a click event for open button. This results in multiple XMLHttpRequest()'s which seem to jam things up quite a bit. I removed the onChange handling for file input field. To open a file (local or URL), you must now explicitly press the "open" button in the control panel.\n''2006.01.08 [2.1.0]'' IMPORT FROM ANYWHERE!!! re-write getImportedTiddlers() logic to either read a local file (using local I/O), OR... read a remote file, using a combination of XML and an iframe to permit cross-domain reading of DOM elements. Adapted from example code and techniques courtesy of Jonny LeRoy.\n''2006.01.06 [2.0.2]'' When refreshing list contents, fixed check for tiddlerExists() when "show differences only" is selected, so that imported tiddlers that don't exist in the current file will be recognized as differences and included in the list.\n''2006.01.04 [2.0.1]'' When "show differences only" is NOT checked, import all tiddlers that have been selected even when they have a matching title and date.\n''2005.12.27 [2.0.0]'' Update for TW2.0\nDefer initial panel creation and only register a notification function when panel first is created\n''2005.12.22 [1.3.1]'' tweak formatting in importReport() and add 'discard report' link to output\n''2005.12.03 [1.3.0]'' Dynamically create/remove importPanel as needed to ensure only one instance of interface elements exists, even if there are multiple instances of macro embedding. Also, dynamically create/recreate importFrame each time an external TW document is loaded for importation (reduces DOM overhead and ensures a 'fresh' frame for each document)\n''2005.11.29 [1.2.1]'' fixed formatting of 'detail info' in importReport()\n''2005.11.11 [1.2.0]'' added 'inline' param to embed controls in a tiddler\n''2005.11.09 [1.1.0]'' only load HTML and CSS the first time the macro handler is called. Allows for redundant placement of the macro without creating multiple instances of controls with the same ID's.\n''2005.10.25 [1.0.5]'' fixed typo in importReport() that prevented reports from being generated\n''2005.10.09 [1.0.4]'' combined documentation with plugin code instead of using separate tiddlers\n''2005.08.05 [1.0.3]'' moved CSS and HTML definitions into plugin code instead of using separate tiddlers\n''2005.07.27 [1.0.2]'' core update 1.2.29: custom overlayStyleSheet() replaced with new core setStylesheet()\n''2005.07.23 [1.0.1]'' added parameter checks and corrected addNotification() usage\n''2005.07.20 [1.0.0]'' Initial Release\n<<<\n!!!!!Credits\n<<<\nThis feature was developed by EricShulman from [[ELS Design Studios|http:/www.elsdesign.com]]\n<<<\n!!!!!Code\n***/\n// // ''MACRO DEFINITION''\n//{{{\n// Version\nversion.extensions.importTiddlers = {major: 3, minor: 0, revision: 8, date: new Date(2006,10,12)};\n\n// IE needs explicit global scoping for functions/vars called from browser events\nwindow.onClickImportButton=onClickImportButton;\nwindow.refreshImportList=refreshImportList;\n\n// default cookie/option values\nif (!config.options.chkImportReport) config.options.chkImportReport=true;\n\nconfig.macros.importTiddlers = { };\nconfig.macros.importTiddlers = {\n label: "import tiddlers",\n prompt: "Copy tiddlers from another document",\n foundMsg: "Found %0 tiddlers in %1",\n countMsg: "%0 tiddlers selected for import",\n importedMsg: "Imported %0 of %1 tiddlers from %2",\n src: "", // path/filename or URL of document to import (retrieved from SiteUrl tiddler)\n proxy: "", // URL for remote proxy script (retrieved from SiteProxy tiddler)\n useProxy: false, // use specific proxy script in front of remote URL\n inbound: null, // hash-indexed array of tiddlers from other document\n newTags: "", // text of tags added to imported tiddlers\n addTags: true, // add new tags to imported tiddlers\n listsize: 8, // # of lines to show in imported tiddler list\n importTags: true, // include tags from remote source document when importing a tiddler\n keepTags: true, // retain existing tags when replacing a tiddler\n index: 0, // current processing index in import list\n sort: "" // sort order for imported tiddler listbox\n};\n\nconfig.macros.importTiddlers.handler = function(place,macroName,params) {\n if (!config.macros.loadTiddlers.handler)\n { alert("importTiddlers error: this plugin requires LoadTiddlersPlugin or TiddlyWiki 2.1+"); return; }\n if (!params[0]) // LINK TO FLOATING PANEL\n createTiddlyButton(place,this.label,this.prompt,onClickImportMenu);\n else if (params[0]=="inline") {// // INLINE TIDDLER CONTENT\n createImportPanel(place);\n document.getElementById("importPanel").style.position="static";\n document.getElementById("importPanel").style.display="block";\n }\n else config.macros.loadTiddlers.handler(place,macroName,params); // FALLBACK: PASS TO LOADTIDDLERS\n}\n//}}}\n\n// // ''INTERFACE DEFINITION''\n\n// // Handle link click to create/show/hide control panel\n//{{{\nfunction onClickImportMenu(e)\n{\n if (!e) var e = window.event;\n var parent=resolveTarget(e).parentNode;\n var panel = document.getElementById("importPanel");\n if (panel==undefined || panel.parentNode!=parent)\n panel=createImportPanel(parent);\n var isOpen = panel.style.display=="block";\n if(config.options.chkAnimate)\n anim.startAnimating(new Slider(panel,!isOpen,e.shiftKey || e.altKey,"none"));\n else\n panel.style.display = isOpen ? "none" : "block" ;\n e.cancelBubble = true;\n if (e.stopPropagation) e.stopPropagation();\n return(false);\n}\n//}}}\n\n// // Create control panel: HTML, CSS\n//{{{\nfunction createImportPanel(place) {\n var panel=document.getElementById("importPanel");\n if (panel) { panel.parentNode.removeChild(panel); }\n setStylesheet(config.macros.importTiddlers.css,"importTiddlers");\n panel=createTiddlyElement(place,"span","importPanel",null,null)\n panel.innerHTML=config.macros.importTiddlers.html;\n refreshImportList();\n var siteURL=store.getTiddlerText("SiteUrl"); if (!siteURL) siteURL="";\n document.getElementById("importSourceURL").value=siteURL;\n config.macros.importTiddlers.src=siteURL;\n var siteProxy=store.getTiddlerText("SiteProxy"); if (!siteProxy) siteProxy="SiteProxy";\n document.getElementById("importSiteProxy").value=siteProxy;\n config.macros.importTiddlers.proxy=siteProxy;\n return panel;\n}\n//}}}\n\n// // CSS\n//{{{\nconfig.macros.importTiddlers.css = '\s\n#importPanel {\s\n display: none; position:absolute; z-index:11; width:35em; right:105%; top:3em;\s\n background-color: #eee; color:#000; font-size: 8pt; line-height:110%;\s\n border:1px solid black; border-bottom-width: 3px; border-right-width: 3px;\s\n padding: 0.5em; margin:0em; -moz-border-radius:1em;\s\n}\s\n#importPanel a, #importPanel td a { color:#009; display:inline; margin:0px; padding:1px; }\s\n#importPanel table { width:100%; border:0px; padding:0px; margin:0px; font-size:8pt; line-height:110%; background:transparent; }\s\n#importPanel tr { border:0px;padding:0px;margin:0px; background:transparent; }\s\n#importPanel td { color:#000; border:0px;padding:0px;margin:0px; background:transparent; }\s\n#importPanel select { width:98%;margin:0px;font-size:8pt;line-height:110%;}\s\n#importPanel input { width:98%;padding:0px;margin:0px;font-size:8pt;line-height:110%}\s\n#importPanel .box { border:1px solid black; padding:3px; margin-bottom:5px; background:#f8f8f8; -moz-border-radius:5px;}\s\n#importPanel .topline { border-top:2px solid black; padding-top:3px; margin-bottom:5px; }\s\n#importPanel .rad { width:auto; }\s\n#importPanel .chk { width:auto; margin:1px;border:0; }\s\n#importPanel .btn { width:auto; }\s\n#importPanel .btn1 { width:98%; }\s\n#importPanel .btn2 { width:48%; }\s\n#importPanel .btn3 { width:32%; }\s\n#importPanel .btn4 { width:24%; }\s\n#importPanel .btn5 { width:19%; }\s\n#importPanel .importButton { padding: 0em; margin: 0px; font-size:8pt; }\s\n#importPanel .importListButton { padding:0em 0.25em 0em 0.25em; color: #000000; display:inline }\s\n#importCollisionPanel { display:none; margin:0.5em 0em 0em 0em; }\s\n';\n//}}}\n\n// // HTML \n//{{{\nconfig.macros.importTiddlers.html = '\s\n<!-- source and report -->\s\n<table><tr><td align=left>\s\n import from\s\n <input type="radio" class="rad" name="importFrom" value="file" CHECKED\s\n onClick="document.getElementById(\s'importLocalPanel\s').style.display=this.checked?\s'block\s':\s'none\s';\s\n document.getElementById(\s'importHTTPPanel\s').style.display=!this.checked?\s'block\s':\s'none\s'"> local file\s\n <input type="radio" class="rad" name="importFrom" value="http"\s\n onClick="document.getElementById(\s'importLocalPanel\s').style.display=!this.checked?\s'block\s':\s'none\s';\s\n document.getElementById(\s'importHTTPPanel\s').style.display=this.checked?\s'block\s':\s'none\s'"> web server\s\n</td><td align=right>\s\n <input type=checkbox class="chk" id="chkImportReport" checked\s\n onClick="config.options[\s'chkImportReport\s']=this.checked;"> create a report\s\n</td></tr></table>\s\n<!-- import from local file -->\s\n<div id="importLocalPanel" style="display:block;margin-bottom:5px;margin-top:5px;padding-top:3px;border-top:1px solid #999">\s\nlocal document path/filename:<br>\s\n<input type="file" id="fileImportSource" size=57 style="width:100%"\s\n onKeyUp="config.macros.importTiddlers.src=this.value"\s\n onChange="config.macros.importTiddlers.src=this.value;">\s\n</div><!--panel-->\s\n\s\n<!-- import from http server -->\s\n<div id="importHTTPPanel" style="display:none;margin-bottom:5px;margin-top:5px;padding-top:3px;border-top:1px solid #999">\s\n<table><tr><td align=left>\s\n remote document URL:<br>\s\n</td><td align=right>\s\n <input type="checkbox" class="chk" id="importUseProxy"\s\n onClick="config.macros.importTiddlers.useProxy=this.checked;\s\n document.getElementById(\s'importSiteProxy\s').style.display=this.checked?\s'block\s':\s'none\s'"> use a proxy script\s\n</td></tr></table>\s\n<input type="text" id="importSiteProxy" style="display:none;margin-bottom:1px" onfocus="this.select()" value="SiteProxy"\s\n onKeyUp="config.macros.importTiddlers.proxy=this.value"\s\n onChange="config.macros.importTiddlers.proxy=this.value;">\s\n<input type="text" id="importSourceURL" onfocus="this.select()" value="SiteUrl"\s\n onKeyUp="config.macros.importTiddlers.src=this.value"\s\n onChange="config.macros.importTiddlers.src=this.value;">\s\n</div><!--panel-->\s\n\s\n<table><tr><td align=left>\s\n select:\s\n <a href="JavaScript:;" id="importSelectAll"\s\n onclick="onClickImportButton(this)" title="select all tiddlers">\s\n &nbsp;all&nbsp;</a>\s\n <a href="JavaScript:;" id="importSelectNew"\s\n onclick="onClickImportButton(this)" title="select tiddlers not already in destination document">\s\n &nbsp;added&nbsp;</a> \s\n <a href="JavaScript:;" id="importSelectChanges"\s\n onclick="onClickImportButton(this)" title="select tiddlers that have been updated in source document">\s\n &nbsp;changes&nbsp;</a> \s\n <a href="JavaScript:;" id="importSelectDifferences"\s\n onclick="onClickImportButton(this)" title="select tiddlers that have been added or are different from existing tiddlers">\s\n &nbsp;differences&nbsp;</a> \s\n <a href="JavaScript:;" id="importToggleFilter"\s\n onclick="onClickImportButton(this)" title="show/hide selection filter">\s\n &nbsp;filter&nbsp;</a> \s\n</td><td align=right>\s\n <a href="JavaScript:;" id="importListSmaller"\s\n onclick="onClickImportButton(this)" title="reduce list size">\s\n &nbsp;&#150;&nbsp;</a>\s\n <a href="JavaScript:;" id="importListLarger"\s\n onclick="onClickImportButton(this)" title="increase list size">\s\n &nbsp;+&nbsp;</a>\s\n <a href="JavaScript:;" id="importListMaximize"\s\n onclick="onClickImportButton(this)" title="maximize/restore list size">\s\n &nbsp;=&nbsp;</a>\s\n</td></tr></table>\s\n<select id="importList" size=8 multiple\s\n onchange="setTimeout(\s'refreshImportList(\s'+this.selectedIndex+\s')\s',1)">\s\n <!-- NOTE: delay refresh so list is updated AFTER onchange event is handled -->\s\n</select>\s\n<input type=checkbox class="chk" id="chkAddTags" checked\s\n onClick="config.macros.importTiddlers.addTags=this.checked;">add new tags &nbsp;\s\n<input type=checkbox class="chk" id="chkImportTags" checked\s\n onClick="config.macros.importTiddlers.importTags=this.checked;">import source tags &nbsp;\s\n<input type=checkbox class="chk" id="chkKeepTags" checked\s\n onClick="config.macros.importTiddlers.keepTags=this.checked;">keep existing tags<br>\s\n<input type=text id="txtNewTags" size=15 onKeyUp="config.macros.importTiddlers.newTags=this.value" autocomplete=off>\s\n<div align=center>\s\n <input type=button id="importOpen" class="importButton" style="width:32%" value="open"\s\n onclick="onClickImportButton(this)">\s\n <input type=button id="importStart" class="importButton" style="width:32%" value="import"\s\n onclick="onClickImportButton(this)">\s\n <input type=button id="importClose" class="importButton" style="width:32%" value="close"\s\n onclick="onClickImportButton(this)">\s\n</div>\s\n<div id="importCollisionPanel">\s\n tiddler already exists:\s\n <input type=text id="importNewTitle" size=15 autocomplete=off">\s\n <div align=center>\s\n <input type=button id="importSkip" class="importButton" style="width:23%" value="skip"\s\n onclick="onClickImportButton(this)">\s\n <input type=button id="importRename" class="importButton" style="width:23%" value="rename"\s\n onclick="onClickImportButton(this)">\s\n <input type=button id="importMerge" class="importButton" style="width:23%" value="merge"\s\n onclick="onClickImportButton(this)">\s\n <input type=button id="importReplace" class="importButton" style="width:23%" value="replace"\s\n onclick="onClickImportButton(this)">\s\n </div>\s\n</div>\s\n';\n//}}}\n\n// // Control interactions\n//{{{\nfunction onClickImportButton(which)\n{\n // DEBUG alert(which.id);\n var theList = document.getElementById('importList');\n if (!theList) return;\n var thePanel = document.getElementById('importPanel');\n var theCollisionPanel = document.getElementById('importCollisionPanel');\n var theNewTitle = document.getElementById('importNewTitle');\n var count=0;\n switch (which.id)\n {\n case 'fileImportSource':\n case 'importOpen': // load import source into hidden frame\n importReport(); // if an import was in progress, generate a report\n config.macros.importTiddlers.inbound=null; // clear the imported tiddler buffer\n refreshImportList(); // reset/resize the listbox\n if (config.macros.importTiddlers.src=="") break;\n // Load document into hidden iframe so we can read it's DOM and fill the list\n loadRemoteFile(config.macros.importTiddlers.src, function(src,txt) {\n var tiddlers = readTiddlersFromHTML(txt);\n var count=tiddlers?tiddlers.length:0;\n displayMessage(config.macros.importTiddlers.foundMsg.format([count,src]));\n config.macros.importTiddlers.inbound=tiddlers;\n window.refreshImportList(0);\n });\n break;\n case 'importSelectAll': // select all tiddler list items (i.e., not headings)\n importReport(); // if an import was in progress, generate a report\n for (var t=0,count=0; t < theList.options.length; t++) {\n if (theList.options[t].value=="") continue;\n theList.options[t].selected=true;\n count++;\n }\n clearMessage(); displayMessage(config.macros.importTiddlers.countMsg.format([count]));\n break;\n case 'importSelectNew': // select tiddlers not in current document\n importReport(); // if an import was in progress, generate a report\n for (var t=0,count=0; t < theList.options.length; t++) {\n theList.options[t].selected=false;\n if (theList.options[t].value=="") continue;\n theList.options[t].selected=!store.tiddlerExists(theList.options[t].value);\n count+=theList.options[t].selected?1:0;\n }\n clearMessage(); displayMessage(config.macros.importTiddlers.countMsg.format([count]));\n break;\n case 'importSelectChanges': // select tiddlers that are updated from existing tiddlers\n importReport(); // if an import was in progress, generate a report\n for (var t=0,count=0; t < theList.options.length; t++) {\n theList.options[t].selected=false;\n if (theList.options[t].value==""||!store.tiddlerExists(theList.options[t].value)) continue;\n for (var i=0; i<config.macros.importTiddlers.inbound.length; i++) // find matching inbound tiddler\n { var inbound=config.macros.importTiddlers.inbound[i]; if (inbound.title==theList.options[t].value) break; }\n theList.options[t].selected=(inbound.modified-store.getTiddler(theList.options[t].value).modified>0); // updated tiddler\n count+=theList.options[t].selected?1:0;\n }\n clearMessage(); displayMessage(config.macros.importTiddlers.countMsg.format([count]));\n break;\n case 'importSelectDifferences': // select tiddlers that are new or different from existing tiddlers\n importReport(); // if an import was in progress, generate a report\n for (var t=0,count=0; t < theList.options.length; t++) {\n theList.options[t].selected=false;\n if (theList.options[t].value=="") continue;\n if (!store.tiddlerExists(theList.options[t].value)) { theList.options[t].selected=true; count++; continue; }\n for (var i=0; i<config.macros.importTiddlers.inbound.length; i++) // find matching inbound tiddler\n { var inbound=config.macros.importTiddlers.inbound[i]; if (inbound.title==theList.options[t].value) break; }\n theList.options[t].selected=(inbound.modified-store.getTiddler(theList.options[t].value).modified!=0); // changed tiddler\n count+=theList.options[t].selected?1:0;\n }\n clearMessage(); displayMessage(config.macros.importTiddlers.countMsg.format([count]));\n break;\n case 'importToggleFilter': // show/hide filter\n case 'importFilter': // apply filter\n alert("coming soon!");\n break;\n case 'importStart': // initiate the import processing\n importReport(); // if an import was in progress, generate a report\n config.macros.importTiddlers.index=0;\n config.macros.importTiddlers.index=importTiddlers(0);\n importStopped();\n break;\n case 'importClose': // unload imported tiddlers or hide the import control panel\n // if imported tiddlers not loaded, close the import control panel\n if (!config.macros.importTiddlers.inbound) { thePanel.style.display='none'; break; }\n importReport(); // if an import was in progress, generate a report\n config.macros.importTiddlers.inbound=null; // clear the imported tiddler buffer\n refreshImportList(); // reset/resize the listbox\n break;\n case 'importSkip': // don't import the tiddler\n var theItem = theList.options[config.macros.importTiddlers.index];\n for (var j=0;j<config.macros.importTiddlers.inbound.length;j++)\n if (config.macros.importTiddlers.inbound[j].title==theItem.value) break;\n var theImported = config.macros.importTiddlers.inbound[j];\n theImported.status='skipped after asking'; // mark item as skipped\n theCollisionPanel.style.display='none';\n config.macros.importTiddlers.index=importTiddlers(config.macros.importTiddlers.index+1); // resume with NEXT item\n importStopped();\n break;\n case 'importRename': // change name of imported tiddler\n var theItem = theList.options[config.macros.importTiddlers.index];\n for (var j=0;j<config.macros.importTiddlers.inbound.length;j++)\n if (config.macros.importTiddlers.inbound[j].title==theItem.value) break;\n var theImported = config.macros.importTiddlers.inbound[j];\n theImported.status = 'renamed from '+theImported.title; // mark item as renamed\n theImported.set(theNewTitle.value,null,null,null,null); // change the tiddler title\n theItem.value = theNewTitle.value; // change the listbox item text\n theItem.text = theNewTitle.value; // change the listbox item text\n theCollisionPanel.style.display='none';\n config.macros.importTiddlers.index=importTiddlers(config.macros.importTiddlers.index); // resume with THIS item\n importStopped();\n break;\n case 'importMerge': // join existing and imported tiddler content\n var theItem = theList.options[config.macros.importTiddlers.index];\n for (var j=0;j<config.macros.importTiddlers.inbound.length;j++)\n if (config.macros.importTiddlers.inbound[j].title==theItem.value) break;\n var theImported = config.macros.importTiddlers.inbound[j];\n var theExisting = store.getTiddler(theItem.value);\n var theText = theExisting.text+'\sn----\sn^^merged from: ';\n theText +='[['+config.macros.importTiddlers.src+'#'+theItem.value+'|'+config.macros.importTiddlers.src+'#'+theItem.value+']]^^\sn';\n theText +='^^'+theImported.modified.toLocaleString()+' by '+theImported.modifier+'^^\sn'+theImported.text;\n var theDate = new Date();\n var theTags = theExisting.getTags()+' '+theImported.getTags();\n theImported.set(null,theText,null,theDate,theTags);\n theImported.status = 'merged with '+theExisting.title; // mark item as merged\n theImported.status += ' - '+theExisting.modified.formatString("MM/DD/YYYY 0hh:0mm:0ss");\n theImported.status += ' by '+theExisting.modifier;\n theCollisionPanel.style.display='none';\n config.macros.importTiddlers.index=importTiddlers(config.macros.importTiddlers.index); // resume with this item\n importStopped();\n break;\n case 'importReplace': // substitute imported tiddler for existing tiddler\n var theItem = theList.options[config.macros.importTiddlers.index];\n for (var j=0;j<config.macros.importTiddlers.inbound.length;j++)\n if (config.macros.importTiddlers.inbound[j].title==theItem.value) break;\n var theImported = config.macros.importTiddlers.inbound[j];\n var theExisting = store.getTiddler(theItem.value);\n theImported.status = 'replaces '+theExisting.title; // mark item for replace\n theImported.status += ' - '+theExisting.modified.formatString("MM/DD/YYYY 0hh:0mm:0ss");\n theImported.status += ' by '+theExisting.modifier;\n theCollisionPanel.style.display='none';\n config.macros.importTiddlers.index=importTiddlers(config.macros.importTiddlers.index); // resume with THIS item\n importStopped();\n break;\n case 'importListSmaller': // decrease current listbox size, minimum=5\n if (theList.options.length==1) break;\n theList.size-=(theList.size>5)?1:0;\n config.macros.importTiddlers.listsize=theList.size;\n break;\n case 'importListLarger': // increase current listbox size, maximum=number of items in list\n if (theList.options.length==1) break;\n theList.size+=(theList.size<theList.options.length)?1:0;\n config.macros.importTiddlers.listsize=theList.size;\n break;\n case 'importListMaximize': // toggle listbox size between current and maximum\n if (theList.options.length==1) break;\n theList.size=(theList.size==theList.options.length)?config.macros.importTiddlers.listsize:theList.options.length;\n break;\n }\n}\n//}}}\n\n// // refresh listbox\n//{{{\nfunction refreshImportList(selectedIndex)\n{\n var theList = document.getElementById("importList");\n if (!theList) return;\n // if nothing to show, reset list content and size\n if (!config.macros.importTiddlers.inbound) \n {\n while (theList.length > 0) { theList.options[0] = null; }\n theList.options[0]=new Option('please open a document...',"",false,false);\n theList.size=config.macros.importTiddlers.listsize;\n return;\n }\n // get the sort order\n if (!selectedIndex) selectedIndex=0;\n if (selectedIndex==0) config.macros.importTiddlers.sort='title'; // heading\n if (selectedIndex==1) config.macros.importTiddlers.sort='title';\n if (selectedIndex==2) config.macros.importTiddlers.sort='modified';\n if (selectedIndex==3) config.macros.importTiddlers.sort='tags';\n if (selectedIndex>3) {\n // display selected tiddler count\n for (var t=0,count=0; t < theList.options.length; t++) count+=(theList.options[t].selected&&theList.options[t].value!="")?1:0;\n clearMessage(); displayMessage(config.macros.importTiddlers.countMsg.format([count]));\n return; // no refresh needed\n }\n\n // get the alphasorted list of tiddlers (optionally, filter out unchanged tiddlers)\n var tiddlers=config.macros.importTiddlers.inbound;\n tiddlers.sort(function (a,b) {if(a['title'] == b['title']) return(0); else return (a['title'] < b['title']) ? -1 : +1; });\n // clear current list contents\n while (theList.length > 0) { theList.options[0] = null; }\n // add heading and control items to list\n var i=0;\n var indent=String.fromCharCode(160)+String.fromCharCode(160);\n theList.options[i++]=new Option(tiddlers.length+' tiddler'+((tiddlers.length!=1)?'s are':' is')+' in the document',"",false,false);\n theList.options[i++]=new Option(((config.macros.importTiddlers.sort=="title" )?">":indent)+' [by title]',"",false,false);\n theList.options[i++]=new Option(((config.macros.importTiddlers.sort=="modified")?">":indent)+' [by date]',"",false,false);\n theList.options[i++]=new Option(((config.macros.importTiddlers.sort=="tags")?">":indent)+' [by tags]',"",false,false);\n // output the tiddler list\n switch(config.macros.importTiddlers.sort)\n {\n case "title":\n for(var t = 0; t < tiddlers.length; t++)\n theList.options[i++] = new Option(tiddlers[t].title,tiddlers[t].title,false,false);\n break;\n case "modified":\n // sort descending for newest date first\n tiddlers.sort(function (a,b) {if(a['modified'] == b['modified']) return(0); else return (a['modified'] > b['modified']) ? -1 : +1; });\n var lastSection = "";\n for(var t = 0; t < tiddlers.length; t++) {\n var tiddler = tiddlers[t];\n var theSection = tiddler.modified.toLocaleDateString();\n if (theSection != lastSection) {\n theList.options[i++] = new Option(theSection,"",false,false);\n lastSection = theSection;\n }\n theList.options[i++] = new Option(indent+indent+tiddler.title,tiddler.title,false,false);\n }\n break;\n case "tags":\n var theTitles = {}; // all tiddler titles, hash indexed by tag value\n var theTags = new Array();\n for(var t=0; t<tiddlers.length; t++) {\n var title=tiddlers[t].title;\n var tags=tiddlers[t].tags;\n if (!tags || !tags.length) {\n if (theTitles["untagged"]==undefined) { theTags.push("untagged"); theTitles["untagged"]=new Array(); }\n theTitles["untagged"].push(title);\n }\n else for(var s=0; s<tags.length; s++) {\n if (theTitles[tags[s]]==undefined) { theTags.push(tags[s]); theTitles[tags[s]]=new Array(); }\n theTitles[tags[s]].push(title);\n }\n }\n theTags.sort();\n for(var tagindex=0; tagindex<theTags.length; tagindex++) {\n var theTag=theTags[tagindex];\n theList.options[i++]=new Option(theTag,"",false,false);\n for(var t=0; t<theTitles[theTag].length; t++)\n theList.options[i++]=new Option(indent+indent+theTitles[theTag][t],theTitles[theTag][t],false,false);\n }\n break;\n }\n theList.selectedIndex=selectedIndex; // select current control item\n if (theList.size<config.macros.importTiddlers.listsize) theList.size=config.macros.importTiddlers.listsize;\n if (theList.size>theList.options.length) theList.size=theList.options.length;\n}\n//}}}\n\n// // re-entrant processing for handling import with interactive collision prompting\n//{{{\nfunction importTiddlers(startIndex)\n{\n if (!config.macros.importTiddlers.inbound) return -1;\n\n var theList = document.getElementById('importList');\n if (!theList) return;\n var t;\n // if starting new import, reset import status flags\n if (startIndex==0)\n for (var t=0;t<config.macros.importTiddlers.inbound.length;t++)\n config.macros.importTiddlers.inbound[t].status="";\n for (var i=startIndex; i<theList.options.length; i++)\n {\n // if list item is not selected or is a heading (i.e., has no value), skip it\n if ((!theList.options[i].selected) || ((t=theList.options[i].value)==""))\n continue;\n for (var j=0;j<config.macros.importTiddlers.inbound.length;j++)\n if (config.macros.importTiddlers.inbound[j].title==t) break;\n var inbound = config.macros.importTiddlers.inbound[j];\n var theExisting = store.getTiddler(inbound.title);\n // avoid redundant import for tiddlers that are listed multiple times (when 'by tags')\n if (inbound.status=="added")\n continue;\n // don't import the "ImportedTiddlers" history from the other document...\n if (inbound.title=='ImportedTiddlers')\n continue;\n // if tiddler exists and import not marked for replace or merge, stop importing\n if (theExisting && (inbound.status.substr(0,7)!="replace") && (inbound.status.substr(0,5)!="merge"))\n return i;\n // assemble tags (remote + existing + added)\n var newTags = "";\n if (config.macros.importTiddlers.importTags)\n newTags+=inbound.getTags() // import remote tags\n if (config.macros.importTiddlers.keepTags && theExisting)\n newTags+=" "+theExisting.getTags(); // keep existing tags\n if (config.macros.importTiddlers.addTags && config.macros.importTiddlers.newTags.trim().length)\n newTags+=" "+config.macros.importTiddlers.newTags; // add new tags\n inbound.set(null,null,null,null,newTags.trim());\n // set the status to 'added' (if not already set by the 'ask the user' UI)\n inbound.status=(inbound.status=="")?'added':inbound.status;\n // do the import!\n // OLD: store.addTiddler(in); store.setDirty(true);\n store.saveTiddler(inbound.title, inbound.title, inbound.text, inbound.modifier, inbound.modified, inbound.tags);\n store.fetchTiddler(inbound.title).created = inbound.created; // force creation date to imported value\n }\n return(-1); // signals that we really finished the entire list\n}\n//}}}\n\n//{{{\nfunction importStopped()\n{\n var theList = document.getElementById('importList');\n var theNewTitle = document.getElementById('importNewTitle');\n if (!theList) return;\n if (config.macros.importTiddlers.index==-1)\n importReport(); // import finished... generate the report\n else\n {\n // DEBUG alert('import stopped at: '+config.macros.importTiddlers.index);\n // import collision... show the collision panel and set the title edit field\n document.getElementById('importCollisionPanel').style.display='block';\n theNewTitle.value=theList.options[config.macros.importTiddlers.index].value;\n }\n}\n//}}}\n\n// // ''REPORT GENERATOR''\n//{{{\nfunction importReport(quiet)\n{\n if (!config.macros.importTiddlers.inbound) return;\n // DEBUG alert('importReport: start');\n\n // if import was not completed, the collision panel will still be open... close it now.\n var panel=document.getElementById('importCollisionPanel'); if (panel) panel.style.display='none';\n\n // get the alphasorted list of tiddlers\n var tiddlers = config.macros.importTiddlers.inbound;\n // gather the statistics\n var count=0;\n for (var t=0; t<tiddlers.length; t++)\n if (tiddlers[t].status && tiddlers[t].status.trim().length && tiddlers[t].status.substr(0,7)!="skipped") count++;\n\n // generate a report\n if (count && config.options.chkImportReport) {\n // get/create the report tiddler\n var theReport = store.getTiddler('ImportedTiddlers');\n if (!theReport) { theReport= new Tiddler(); theReport.title = 'ImportedTiddlers'; theReport.text = ""; }\n // format the report content\n var now = new Date();\n var newText = "On "+now.toLocaleString()+", "+config.options.txtUserName\n newText +=" imported "+count+" tiddler"+(count==1?"":"s")+" from\sn[["+config.macros.importTiddlers.src+"|"+config.macros.importTiddlers.src+"]]:\sn";\n if (config.macros.importTiddlers.addTags && config.macros.importTiddlers.newTags.trim().length)\n newText += "imported tiddlers were tagged with: \s""+config.macros.importTiddlers.newTags+"\s"\sn";\n newText += "<<<\sn";\n for (var t=0; t<tiddlers.length; t++) if (tiddlers[t].status) newText += "#[["+tiddlers[t].title+"]] - "+tiddlers[t].status+"\sn";\n newText += "<<<\sn";\n// 20060918 ELS: DON'T ADD "discard" BUTTON TO REPORT\n// newText += "<html><input type=\s"button\s" href=\s"javascript:;\s" ";\n// newText += "onclick=\s"story.closeTiddler('"+theReport.title+"'); store.deleteTiddler('"+theReport.title+"');\s" ";\n// newText += "value=\s"discard report\s"></html>";\n // update the ImportedTiddlers content and show the tiddler\n theReport.text = newText+((theReport.text!="")?'\sn----\sn':"")+theReport.text;\n theReport.modifier = config.options.txtUserName;\n theReport.modified = new Date();\n // OLD: store.addTiddler(theReport);\n store.saveTiddler(theReport.title, theReport.title, theReport.text, theReport.modifier, theReport.modified, theReport.tags);\n if (!quiet) { story.displayTiddler(null,theReport.title,1,null,null,false); story.refreshTiddler(theReport.title,1,true); }\n }\n\n // reset status flags\n for (var t=0; t<config.macros.importTiddlers.inbound.length; t++) config.macros.importTiddlers.inbound[t].status="";\n\n // refresh display if tiddlers have been loaded\n if (count) { store.setDirty(true); store.notifyAll(); }\n\n // always show final message when tiddlers were actually loaded\n if (count) displayMessage(config.macros.importTiddlers.importedMsg.format([count,tiddlers.length,config.macros.importTiddlers.src]));\n}\n//}}}\n\n/***\n!!!!!TW 2.1beta Core Code Candidate\n//The following section is a preliminary 'code candidate' for incorporation of non-interactive 'load tiddlers' functionality into TW2.1beta. //\n***/\n//{{{\n// default cookie/option values\nif (!config.options.chkImportReport) config.options.chkImportReport=true;\n\nconfig.macros.loadTiddlers = {\n label: "",\n prompt: "add/update tiddlers from '%0'",\n askMsg: "Please enter a local path/filename or a remote URL",\n openMsg: "Opening %0",\n openErrMsg: "Could not open %0 - error=%1",\n readMsg: "Read %0 bytes from %1",\n foundMsg: "Found %0 tiddlers in %1",\n nochangeMsg: "'%0' is up-to-date... skipped.",\n loadedMsg: "Loaded %0 of %1 tiddlers from %2"\n};\n\nconfig.macros.loadTiddlers.handler = function(place,macroName,params) {\n var label=(params[0] && params[0].substr(0,6)=='label:')?params.shift().substr(6):this.label;\n var prompt=(params[0] && params[0].substr(0,7)=='prompt:')?params.shift().substr(7):this.prompt;\n var filter="updates";\n if (params[0] && (params[0]=='all' || params[0]=='new' || params[0]=='changes' || params[0]=='updates'\n || params[0].substr(0,8)=='tiddler:' || params[0].substr(0,4)=='tag:'))\n filter=params.shift();\n var src=params.shift(); if (!src || !src.length) return; // filename is required\n var quiet=(params[0]=="quiet"); if (quiet) params.shift();\n var ask=(params[0]=="confirm"); if (ask) params.shift();\n var force=(params[0]=="force"); if (force) params.shift();\n if (label.trim().length) {\n // link triggers load tiddlers from another file/URL and then applies filtering rules to add/replace tiddlers in the store\n createTiddlyButton(place,label.format([src]),prompt.format([src]), function() {\n if (src=="ask") src=prompt(config.macros.loadTiddlers.askMsg);\n loadRemoteFile(src,loadTiddlers,quiet,ask,filter,force);\n })\n }\n else {\n // load tiddlers from another file/URL and then apply filtering rules to add/replace tiddlers in the store\n if (src=="ask") src=prompt(config.macros.loadTiddlers.askMsg);\n loadRemoteFile(src,loadTiddlers,quiet,ask,filter,force);\n }\n}\n\nfunction loadTiddlers(src,html,quiet,ask,filter,force)\n{\n var tiddlers = readTiddlersFromHTML(html);\n var count=tiddlers?tiddlers.length:0;\n if (!quiet) displayMessage(config.macros.loadTiddlers.foundMsg.format([count,src]));\n var count=0;\n if (tiddlers) for (var t=0;t<tiddlers.length;t++) {\n var inbound = tiddlers[t];\n var theExisting = store.getTiddler(inbound.title);\n if (inbound.title=='ImportedTiddlers')\n continue; // skip "ImportedTiddlers" history from the other document...\n\n // apply the all/new/changes/updates filter (if any)\n if (filter && filter!="all") {\n if ((filter=="new") && theExisting) // skip existing tiddlers\n continue;\n if ((filter=="changes") && !theExisting) // skip new tiddlers\n continue;\n if ((filter.substr(0,4)=="tag:") && inbound.tags.find(filter.substr(4))==null) // must match specific tag value\n continue;\n if ((filter.substr(0,8)=="tiddler:") && inbound.title!=filter.substr(8)) // must match specific tiddler name\n continue;\n if (!force && store.tiddlerExists(inbound.title) && ((theExisting.modified.getTime()-inbound.modified.getTime())>=0))\n { if (!quiet) displayMessage(config.macros.loadTiddlers.nochangeMsg.format([inbound.title])); continue; }\n }\n // get confirmation if required\n if (ask && !confirm((theExisting?"Update":"Add")+" tiddler '"+inbound.title+"'\snfrom "+src))\n { tiddlers[t].status="skipped - cancelled by user"; continue; }\n // DO IT!\n // OLD: store.addTiddler(in);\n store.saveTiddler(inbound.title, inbound.title, inbound.text, inbound.modifier, inbound.modified, inbound.tags);\n store.fetchTiddler(inbound.title).created = inbound.created; // force creation date to imported value\n tiddlers[t].status=theExisting?"updated":"added"\n count++;\n }\n if (count) {\n // refresh display\n store.setDirty(true);\n store.notifyAll();\n // generate a report\n if (config.options.chkImportReport) {\n // get/create the report tiddler\n var theReport = store.getTiddler('ImportedTiddlers');\n if (!theReport) { theReport= new Tiddler(); theReport.title = 'ImportedTiddlers'; theReport.text = ""; }\n // format the report content\n var now = new Date();\n var newText = "On "+now.toLocaleString()+", "+config.options.txtUserName+" loaded "+count+" tiddlers from\sn[["+src+"|"+src+"]]:\sn";\n newText += "<<<\sn";\n for (var t=0; t<tiddlers.length; t++) if (tiddlers[t].status) newText += "#[["+tiddlers[t].title+"]] - "+tiddlers[t].status+"\sn";\n newText += "<<<\sn";\n// 20060918 ELS: DON'T ADD "discard" BUTTON TO REPORT\n// newText += "<html><input type=\s"button\s" href=\s"javascript:;\s" ";\n// newText += "onclick=\s"story.closeTiddler('"+theReport.title+"'); store.deleteTiddler('"+theReport.title+"');\s" ";\n// newText += "value=\s"discard report\s"></html>";\n // update the ImportedTiddlers content and show the tiddler\n theReport.text = newText+((theReport.text!="")?'\sn----\sn':"")+theReport.text;\n theReport.modifier = config.options.txtUserName;\n theReport.modified = new Date();\n // OLD: store.addTiddler(theReport);\n store.saveTiddler(theReport.title, theReport.title, theReport.text, theReport.modifier, theReport.modified, theReport.tags);\n if (!quiet) { story.displayTiddler(null,theReport.title,1,null,null,false); story.refreshTiddler(theReport.title,1,true); }\n }\n }\n // always show final message when tiddlers were actually loaded\n if (!quiet||count) displayMessage(config.macros.loadTiddlers.loadedMsg.format([count,tiddlers.length,src]));\n}\n\nfunction loadRemoteFile(src,callback,quiet,ask,filter,force) {\n if (src==undefined || !src.length) return null; // filename is required\n if (!quiet) clearMessage();\n if (!quiet) displayMessage(config.macros.loadTiddlers.openMsg.format([src]));\n if (src.substr(0,4)!="http" && src.substr(0,4)!="file") { // if not a URL, fallback to read from local filesystem\n var txt=loadFile(src);\n if ((txt==null)||(txt==false)) // file didn't load\n { if (!quiet) displayMessage(config.macros.loadTiddlers.openErrMsg.format([src,"(unknown)"])); }\n else {\n if (!quiet) displayMessage(config.macros.loadTiddlers.readMsg.format([txt.length,src]));\n if (callback) callback(src,convertUTF8ToUnicode(txt),quiet,ask,filter,force);\n }\n }\n else {\n var x; // get an request object\n try {x = new XMLHttpRequest()} // moz\n catch(e) {\n try {x = new ActiveXObject("Msxml2.XMLHTTP")} // IE 6\n catch (e) {\n try {x = new ActiveXObject("Microsoft.XMLHTTP")} // IE 5\n catch (e) { return }\n }\n }\n // setup callback function to handle server response(s)\n x.onreadystatechange = function() {\n if (x.readyState == 4) {\n if (x.status==0 || x.status == 200) {\n if (!quiet) displayMessage(config.macros.loadTiddlers.readMsg.format([x.responseText.length,src]));\n if (callback) callback(src,x.responseText,quiet,ask,filter,force);\n }\n else {\n if (!quiet) displayMessage(config.macros.loadTiddlers.openErrMsg.format([src,x.status]));\n }\n }\n }\n // get privileges to read another document's DOM via http:// or file:// (moz-only)\n if (typeof(netscape)!="undefined") {\n try { netscape.security.PrivilegeManager.enablePrivilege("UniversalBrowserRead"); }\n catch (e) { if (!quiet) displayMessage(e.description?e.description:e.toString()); }\n }\n // send the HTTP request\n try {\n var url=src+(src.indexOf('?')<0?'?':'&')+'nocache='+Math.random();\n x.open("GET",src,true);\n if (x.overrideMimeType) x.overrideMimeType('text/html');\n x.send(null);\n }\n catch (e) {\n if (!quiet) {\n displayMessage(config.macros.loadTiddlers.openErrMsg.format([src,"(unknown)"]));\n displayMessage(e.description?e.description:e.toString());\n }\n }\n }\n}\n\nfunction readTiddlersFromHTML(html)\n{\n // extract store area from html \n var start=html.indexOf('<div id="storeArea">');\n var end=html.indexOf("<!--POST-BODY-START--"+">",start);\n if (end==-1) var end=html.indexOf("</body"+">",start); // backward-compatibility for older documents\n var sa="<html><body>"+html.substring(start,end)+"</body></html>";\n\n // load html into iframe document\n var f=document.getElementById("loaderFrame"); if (f) document.body.removeChild(f);\n f=document.createElement("iframe"); f.id="loaderFrame";\n f.style.width="0px"; f.style.height="0px"; f.style.border="0px";\n document.body.appendChild(f);\n var d=f.document;\n if (f.contentDocument) d=f.contentDocument; // For NS6\n else if (f.contentWindow) d=f.contentWindow.document; // For IE5.5 and IE6\n d.open(); d.writeln(sa); d.close();\n\n // read tiddler DIVs from storeArea DOM element \n var sa = d.getElementById("storeArea");\n if (!sa) return null;\n sa.normalize();\n var nodes = sa.childNodes;\n if (!nodes || !nodes.length) return null;\n var tiddlers = [];\n for(var t = 0; t < nodes.length; t++) {\n var title = null;\n if(nodes[t].getAttribute)\n title = nodes[t].getAttribute("tiddler");\n if(!title && nodes[t].id && (nodes[t].id.substr(0,5) == "store"))\n title = nodes[t].id.substr(5);\n if(title && title != "")\n tiddlers.push((new Tiddler()).loadFromDiv(nodes[t],title));\n }\n return tiddlers;\n}\n//}}}
On 2007.04.12 - Thursday, April 12 11:39:08 AM, Webster imported 1 tiddler from\n[[T:\sclimate-change-two.net\sar4-wg2-spm\sindex.htm|T:\sclimate-change-two.net\sar4-wg2-spm\sindex.htm]]:\n<<<\n#[[ToggleTagPlugin]] - added\n<<<\n\n----\nOn 2007.04.12 - Thursday, April 12 11:20:27 AM, Webster imported 1 tiddler from\n[[http://www.climate-change-two.net/stern-review/|http://www.climate-change-two.net/stern-review/]]:\n<<<\n#[[DisableWikiLinksPlugin]] - added\n<<<\n\n----\nOn 2007.04.12 - Thursday, April 12 12:28:36 AM, Webster imported 1 tiddler from\n[[T:\sclimate-change-two.net\sar4-wg2-spm\sindex.htm|T:\sclimate-change-two.net\sar4-wg2-spm\sindex.htm]]:\n<<<\n#[[TiddlyPerfect]] - added\n<<<\n\n----\nOn 2007.04.11 - Wednesday, April 11 11:06:38 PM, Webster imported 1 tiddler from\n[[T:\sclimate-change-two.net\sar4-wg2-spm\sindex.htm|T:\sclimate-change-two.net\sar4-wg2-spm\sindex.htm]]:\n<<<\n#[[Conference Of NGOs]] - added\n<<<\n\n----\nOn 2007.04.11 - Wednesday, April 11 11:01:19 PM, Webster imported 1 tiddler from\n[[T:\sclimate-change-two.net\sar4-wg2-spm\sindex.htm|T:\sclimate-change-two.net\sar4-wg2-spm\sindex.htm]]:\n<<<\n#[[QuickOpenTagPlugin]] - added\n<<<\n\n----\nOn 2007.04.11 - Wednesday, April 11 10:56:29 PM, Webster imported 1 tiddler from\n[[T:\sclimate-change-two.net\sar4-wg2-spm\sINDEX.HTM|T:\sclimate-change-two.net\sar4-wg2-spm\sINDEX.HTM]]:\n<<<\n#[[CloseOnCancelPlugin]] - added\n<<<\n\n----\nOn 2007.04.11 - Wednesday, April 11 8:40:26 PM, Webster imported 1 tiddler from\n[[T:\sclimate-change-two.net\sar4-wg2-spm\sINDEX.HTM|T:\sclimate-change-two.net\sar4-wg2-spm\sINDEX.HTM]]:\n<<<\n#[[TagglyTaggingStyles]] - added\n<<<\n\n----\nOn 2007.04.11 - Wednesday, April 11 8:39:26 PM, Webster imported 1 tiddler from\n[[T:\sclimate-change-two.net\sar4-wg2-spm\sINDEX.HTM|T:\sclimate-change-two.net\sar4-wg2-spm\sINDEX.HTM]]:\n<<<\n#[[TagglyTaggingPlugin]] - added\n<<<\n\n----\nOn 2007.04.11 - Wednesday, April 11 8:38:48 PM, Webster imported 1 tiddler from\n[[T:\sclimate-change-two.net\sar4-wg2-spm\sINDEX.HTM|T:\sclimate-change-two.net\sar4-wg2-spm\sINDEX.HTM]]:\n<<<\n#[[HideWhenPlugin]] - added\n<<<\n\n----\nOn 2007.04.11 - Wednesday, April 11 8:34:00 PM, Webster imported 22 tiddlers from\n[[T:\sclimate-change-two.net\sar4-wg2-spm\sINDEX.HTM|T:\sclimate-change-two.net\sar4-wg2-spm\sINDEX.HTM]]:\n<<<\n#[[60th Annual DPI/NGO Conference]] - added\n#[[About this web site]] - added\n#[[Administrative Menu]] - replaces Administrative Menu - 3/16/2007 13:50:00 by Information Habitat\n#[[Administrative Menus]] - replaces Administrative Menus - 3/17/2007 16:03:00 by Information Habitat\n#[[AdvancedOptions]] - replaces AdvancedOptions - 2/25/2007 13:05:00 by Information Habitat\n#[[Alphabetical Tiddlers]] - replaces Alphabetical Tiddlers - 2/2/2007 15:52:00 by Information Habitat\n#[[Avoiding Dangerous Climate Change]] - added\n#[[Basic Tiddler Lists]] - replaces Basic Tiddler Lists - 3/11/2007 22:13:00 by Information Habitat\n#[[Climate Change 2.0]] - replaces Climate Change 2.0 - 3/27/2007 10:53:00 by YourName\n#[[Climate Change 2.0 - Elements]] - added\n#[[DPI/NGO Conference Planning Committee]] - added\n#[[EditTemplate]] - added\n#[[Head Menu]] - replaces Head Menu - 3/17/2007 14:12:00 by Information Habitat\n#[[Images]] - added\n#[[Information and Communications Sub-Committee]] - added\n#[[Menus]] - replaces Menus - 3/17/2007 16:01:00 by Information Habitat\n#[[Networking Sub-Committee]] - added\n#[[Robert Pollard]] - added\n#[[Setup Menu]] - added\n#[[Templates for Light & Colour Cubes]] - added\n#[[User Options]] - replaces User Options - 2/23/2007 18:22:00 by NGO Committee on Education\n#[[ViewTemplate]] - replaces ViewTemplate - 12/28/2006 12:19:00 by Grandpa Ruh\n<<<\n\n----\nOn 2007.03.29 - Thursday, March 29 2:05:44 AM, Webster imported 2 tiddlers from\n[[T:\sclimate-change-two.net\stiddlysites\sindex.htm|T:\sclimate-change-two.net\stiddlysites\sindex.htm]]:\n<<<\n#[[Administrative Menu]] - skipped after asking\n#[[AdvancedOptions]] - added\n#[[Head Menu]] - added\n#[[User Options]] - skipped after asking\n<<<\n\n----\nOn 2007.03.29 - Thursday, March 29 1:58:37 AM, Webster imported 1 tiddler from\n[[T:\sclimate-change-two.net\stiddlysites\sindex.htm|T:\sclimate-change-two.net\stiddlysites\sindex.htm]]:\n<<<\n#[[NestedSlidersPlugin]] - added\n<<<\n
''Information Habitat: Where Information Lives'' - an NGO in Special Consultative Status with the United Nations Economic and Social Council - was founded in May 1990 in the early stage of preparation for the 1992 ''Earth Summit'' based on an appreciation of the profound transformation of the nature, characteristics and economics of ''information habitats'' made possible through advances in information and communications technologies.\n\n''Information Habitat'' played the lead role in the use and promotion of information and communications technologies during the preparations for the Earth Summit; managed a set of electronic conferences hosted by the ''Institute for Global Communications'' and the ''Association for Progressive Communications''; provided technical support for NGOs participating in the meetings of the ''Preparatory Committee'' for the Earth Summit; and managed ''Da Zi Bao'' - a participant interactive message system -
''Information and Communications Sub-Committee'' of the [[NGO Committee on Education]]\n\n
> From [[Towards Earth Summit II: Recommendations for Actions and Commitments at Earth Summit II|http://habitat.igc.org/csdngo/1997/es2ngo1.html]], June 1997\n!!!Integrated Monitoring Frameworks\n''We call for'': The establishment through DPCSD (now the Department of Economic and Social Affairs) of an integrated comprehensive framework - making effective use of modern information and communications technology - for systematic monitoring of the implementation of all the Rio agreements as well as the agreements of the other recent global conferences.\n* Information that the UN has available at web-sites and other new information technologies should be made accessible to the public on a no-cost basis\n* The development of indicators and criteria shall in no way undermine obligations incurred under treaties, covenants conventions or commitments made in conference action plans.\n''Implementation'':\n* Develop a comprehensive framework - to be accessible online - to enable the systematic monitoring and implementation of the agreements of the "Rio cluster" of United Nations conferences and proceedings;\n* develop an integrated, fully searchable database that incorporates the text of all these agreements, that documents initiatives - including best practices - taken by intergovernmental agencies, governments and major groups, and that incorporates data and indicators that can help show current status and trends towards sustainability;\n* the use of geographic information systems as a tool to assist in organizing and integrating information on measures; and\n* measures to support capacity-building in the use of information and communications technology - including the strengthening of information and communications infrastructure in developing countries\n''Rationale'': There is currently no systematic framework in place by which it is possible to assess and monitor the extent and specifics of implementation of the Rio agreements. Modern information and communications technology offers a range of powerful tools to organize and integrate a broad base of diverse information, and to make it widely accessible. There are many areas of overlap between the Rio agreements and the other "Rio cluster" agreements - all of which, in one way or another relate to the attainment of a sustainable common future - so there is a need for an integrated process of monitoring implementation of the whole set of agreements.
The economics of climate change is shaped by the science. That is what dictates the structure of the economic analysis and policies; therefore we start with the science.\n\nHuman-induced climate change is caused by the emissions of carbon dioxide and other greenhouse gases (~GHGs) that have accumulated in the atmosphere mainly over the past 100 years.\n\nThe scientific evidence that climate change is a serious and urgent issue is now compelling. It warrants strong action to reduce greenhouse-gas emissions around the world to reduce the risk of very damaging and potentially irreversible impacts on ecosystems, societies and economies. With good policies the costs of action need not be prohibitive and would be much smaller than the damage averted.\n\nReversing the trend to higher global temperatures requires an urgent, world-wide shift towards a low-carbon economy. Delay makes the problem much more difficult and action to deal with it much more costly. Managing that transition effectively and efficiently poses ethical and economic challenges, but also opportunities, which this Review sets out to explore.\n\nEconomics has much to say about assessing and managing the risks of climate change, and about how to design national and international responses for both the reduction of emissions and adaptation to the impacts that we can no longer avoid. If economics is used to design cost-effective policies, then taking action to tackle climate change will enable societies' potential for well-being to increase much faster in the long run than without action; we can be 'green' and grow. Indeed, if we are not 'green', we will eventually undermine growth, however measured.\n\nThis Review takes an international perspective on the economics of climate change. Climate change is a global issue that requires a global response. The science tells us that emissions have the same effects from wherever they arise. The implication for the economics is that this is clearly and unambiguously an international collection action problem with all the attendant difficulties of generating coherent action and of avoiding free riding. It is a problem requiring international cooperation and leadership.\n\nOur approach emphasises a number of key themes, which will feature throughout.\n* We use a consistent approach towards uncertainty. The science of climate change is reliable, and the direction is clear. But we do not know precisely when and where particular impacts will occur. Uncertainty about impacts strengthens the argument for mitigation: this Review is about the economics of the management of very large risks.\n* We focus on a quantitative understanding of risk, assisted by recent advances in the science that have begun to assign probabilities to the relationships between emissions and changes in the climate system, and to those between the climate and the natural environment.\n* We take a systematic approach to the treatment of inter- and intra- generational equity in our analysis, informed by a consideration of what various ethical perspectives imply in the context of climate change. Inaction now risks great damage to the prospects of future generations, and particularly to the poorest amongst them. A coherent economic analysis of policy requires that we be explicit about the effects.\nEconomists describe human-induced climate change as an 'externality' and the global climate as a 'public good'. Those who create greenhouse-gas emissions as they generate electricity, power their factories, flare off gases, cut down forests, fly in planes, heat their homes or drive their cars do not have to pay for the costs of the climate change that results from their contribution to the accumulation of those gases in the atmosphere.\n\nBut climate change has a number of features that together distinguish it from other externalities. It is global in its causes and consequences; the impacts of climate change are persistent and develop over the long run; there are uncertainties that prevent precise quantification of the economic impacts; and there is a serious risk of major, irreversible change with non-marginal economic effects.\n\nThis analysis leads us to five sets of questions that shape Parts 2 to 6 of the Review.\n* What is our understanding of the risks of the impacts of climate change, their costs, and on whom they fall?\n* What are the options for reducing greenhouse-gas emissions, and what do they cost? What does this mean for the economics of the choice of paths to stabilisation for the world? What are the economic opportunities generated by action on reducing emissions and adopting new technologies?\n* For mitigation of climate change, what kind of incentive structures and policies will be most effective, efficient and equitable? What are the implications for the public finances?\n* For adaptation, what approaches are appropriate and how should they be financed?\n* How can approaches to both mitigation and adaptation work at an international level?
Launch Presentation\n!I Introduction\n* Thank you Chancellor and Prime Minister for the opportunity and for all the support. Thank you to all the many departments across Whitehall for their tremendous collaboration. And especially to the team who have worked so hard on this Review. We have also benefited from discussions with the private sector, NGOs and academics in this country and the many countries we visited around the world.\n* Thank you to Martin Rees, the Royal Society, the Hadley Centre and all the scientists from whom we have learned during our work. The science has been our starting point. It shapes the economics. The science tells us that greenhouse gas emissions are an externality; in other words, our emissions affect the lives of others.\n* When people do not pay for the consequences of their actions we have market failure. This is the greatest market failure the world has seen. It is an externality that goes beyond those of ordinary congestion or pollution, although many of the same economic principles apply for its analysis. This externality is different in 4 key ways that shape the whole policy story of a rational response. It is: global; long term; involves risks and uncertainties; and potentially involves major and irreversible change.\n* Correspondingly the economic analysis and the policies must be:\n** international, how countries work together;\n** long-term, our actions now cast their shadow far into the future;\n** have the economics of risk at its core; and\n** go beyond the marginal changes which are the usual daily fare of economists.\n* There are 2 halves of the Review\n** the first examines: impacts, risks, costs and targets\n** the second, policies,\n* Our tasks were to bring analysis and evidence to the table to take forward understanding, promote action, shape policy.\n* This is as fascinating a subject as I have encountered. We have to muster all the economics we can bring to bear. We offer here just a brief introduction to the analysis of the Review.\n!II Impacts, Costs, Targets\n<html><center><img src="slide-1.jpg"></center></html>\nThis slide demonstrates the link between global mean temperatures and the impacts of climate change\n* We begin by looking at the relation between temperature and impacts, and then we will examine the link between greenhouse gases and temperature.\n* Each link involves risks and uncertainties. The slide shows that the impacts cover many dimensions. The risks intensify as temperature rises. Many of the risks are transmitted through water; floods, droughts, storms, sea level rises.\n* We now know that business-as-usual involves very high risks; it is likely to imply a rise of 4-5&deg;C or more above pre-industrial levels within the next 100 or 150 years. This is way outside human experience. At high levels of warming, less is known about how the climate will respond - very large events might happen. The last Ice Age was 5&deg;C below where we are today - such differences are transformational. Redrawing physical geography would redraw human geography; where we live, and how we can live our lives.\n* Further, the impacts are inequitable: poor countries will be hit hardest and earliest, when it is the rich countries responsible for &frac34; of greenhouse gases currently in the atmosphere.\n<html><center><img src="slide-2.jpg"></center></html>\n* What is the link between greenhouse gases and temperature?\n* First, we must recognise the lags in these processes. Our emissions are a flow each year and accumulate in the atmosphere building up stocks over time. We are currently adding around 2.5 ppm of greenhouse gases a year in CO~~2~~ equivalent and the current stock of all greenhouse gases, in CO~~2~~ equivalent is around 430ppm. And these stocks affect temperatures with a lag. For example, we are already committed to at least &frac12;ºC more in the next few decades from emissions we have already made.\n* The slide shows eventual temperature increases corresponding to different levels of stabilised stocks. Red lines show ranges corresponding to two studies IPCC (2001) and Hadley (2004) which have formed the basis of our risk analysis. Grey bars give the range of existing studies. We have been fairly cautious. Some more recent studies show a bigger range at the upper end.\n* And there is uncertainty in linking temperature change to amounts of greenhouse gases in the atmosphere. However, it is clear that as the levels of greenhouse gases rise, the ranges shift to the right, i.e. to higher temperatures. At the upper end of the ranges, the climate is entering very dangerous territory. Thus the risk analysis must include the possibility of very powerful effects.\n* 450ppm means around a 50:50 chance of keeping global increases below 2&deg;C above pre-industrial. At this level, it is unlikely that increases will exceed 3&deg;C. At 550ppm, there is around a 50:50 chance of keeping increases below 3&deg;C, but it is unlikely that increases would exceed 4&deg;C. 550ppm is risky, but far less risky than business-as-usual: continuing on the current path until the end of this century gives at least a 50:50 chance of an eventual temperature rise above 5&deg;C.\n* Given where we are (as I noted 430ppm and adding 2.5ppm per year and rising); given the obvious dangers of going over 550ppm, this strongly suggests that we should aim somewhere between 450 and 550ppm CO~~2~~e.\n<html><center><img src="slide-3.jpg"></center></html>\nThus we ask in our Review what paths of emissions would lead us to stabilise in this range and what would be the cost?\n* Business as usual will give us 550 within 30 - 35 years and by the end of the century beyond 850ppm: this is off the scale shown in the previous slide.\n* What is involved in stabilising? The slide shows the paths of flows of emissions which are required in gigatonnes of CO~~2~~e per annum.\n* 450ppm is already nearly out of reach. 450ppm means peaking in the next 5 years or so and dropping fast.\n* 550ppm means peaking in the next 10 - 20 years and falling by between 1 and 3% per year.\n* It is clear that stabilising at 550ppm or below involves strong action. For example, the power sector around the world will have to be at least 60% de-carbonised by 2050 and with a bigger proportion de-carbonised in rich countries. But such stabilisation is feasible. If action is delayed by 20 or more years the ability to stabilise at or below 550ppm could slip away, or the costs would rise sharply.\n* We have seen the dangers; we have seen what is involved in terms of reducing emissions to stabilise between 450 and 550ppm. Can we quantify these dangers and costs?\n* What are the costs of doing nothing? We have to try to model the dangerous risks we have been discussing. We have to look out over 100-200 years when the big effects of our actions over the next 50 years will come through. When we do this in a way that averages across risks, time, and countries, we calculate that the damages from business-as-usual would be equivalent to at least 5 and up to 20% of consumption a year, depending on the types of risks and effects included. The first effects of climate change are already evident, but it is still some time before impacts and risks on this scale will appear. But given the lags, action to head off these risks is urgent.\n* What are the costs and benefits of taking action? The costs of removing most of that risk, getting to 550 or below, are around 1% of GDP per year. The cost could be above or below 1% depending on policies, technological progress and ambitions but would be in this region. This is equivalent to paying on average 1% more for what we buy - the price rise for carbon-intensive goods would be higher and for low carbon-intensive goods would be lower - it is like a one-off increase by 1% in the price level. That is manageable; we can grow and be green.\n* We can go further than this. There will be new opportunities; new markets worth $100s bn p.a. Economically speaking, mitigation is a very good deal. Business-as-usual, on the other hand, will eventually derail growth.\n!II Policy\n<html><center><img src="slide-4.jpg"></center></html>\n* We must start by recognising that emissions come from every economic activity and every country. The global breakdown is presented in the slide. Action is necessary across all sectors if the required reductions are to be achieved. Different activities and sectors may require different policies. On the other hand there are some clear and broad principles.\n* There are three strands to policy: all are required.\n** First, we must establish a carbon price via tax, trade and regulation - without this price there is no incentive to decarbonise.\n** Second, we must promote technology: through research and development. Further, private sector investors need confidence that there will be markets for their products: that is why deployment policy also makes sense.\n** And third we must deal with market failure; for example problems in property and capital markets inhibit investments for energy-efficiency. Further, the sticks and carrots of incentives, rightly emphasised by we economists, need to be supported by information. And still further, greater understanding of the issues can itself change the behaviour of individuals and firms.\n* Much of the detail of how these strands of policy will work has some subtlety. I will give two examples on pricing\n** The economics of risk says the dangers of over-shooting imply the need for a clear long-term quantitative goal, which drives the emissions path into a fairly narrow corridor.\n** The economics of cost requires flexibility as to how, where and when we reduce emissions whilst staying in that corridor.\n* Second example, trading means there is a difference between what emissions reduction you fund and what you do yourself. Buying abroad may get you more mitigation for your money and the process can provide financial flows into developing countries thereby promoting their action.\n* And all policy should be clear and credible to support long-term investment decisions. It is governments that set frameworks but for the most part the private sector that makes these investments.\n!IV International\n<html><center><img src="slide-5.jpg"></center></html>\n* We must be very clear that this is an international problem and action must be multilateral. Any one country is only part of the problem. The UK is just 2% of the emissions. But the behaviour of each country will determine whether the collective response is sustained and effective. Further, it will be far easier to take policy forward in one country if other countries move together.\n* Any particular country will employ a range of policies. These policies would normally include both taxes and standards and regulation. But let me say a little more about trading.\n* Emissions trading is a powerful way of establishing cooperation across borders. The Emissions Trading Scheme (ETS) is leading the way. Beyond 2012 (i.e. third phase) there is an opportunity for it to be ambitious, long-term, and open to trade with other countries and regions.\n* If the current range of activities in the EU ETS applied to trading with the top twenty emitters, markets would increase five-fold, as the slide shows. The yellow area in the bottom left hand corner shows the emissions currently covered under the EU ETS. The lighter shade of orange shows what could be covered if other countries were to become involved in this type of trading. And the range of activities covered could itself be expanded. With international trade and common prices we can get more reduction for a given cost.\n* Technology: Research and development in the energy sector has halved since the early 1980s. That trend must be reversed, and ideas must be shared. We need larger cross-border markets for low carbon technologies to drive deployment and bring down costs.\n* Trees: deforestation, as we saw, is responsible for more emissions than the transport sector and there are opportunities to reduce emissions strongly and cost effectively, if the countries where the trees stand are given strong support internationally.\n* Working internationally we can build on the experience of the United Nations Framework Convention on Climate Change, creating frameworks for markets and incentives. Without incentives private investment and flows of international finance of the required magnitude will not happen. The WB and IFIs are exploring how to scale up flows for the future and will be able to expand their activities\n* And we must bring in all the major players, particularly the USA, China, India. I have lived and worked in all 3 countries over the last 3 or 4 decades and in the last 2 or 3 years have seen remarkable changes of opinion (e.g. both of China and India have their 11th 5-year plans starting this year; and these plans have strong ambitions on energy efficiency). Persuasion and promotion of international action involves bringing evidence and creating frameworks that are inclusive.\n* Managing a transition to a low carbon economy cuts across most areas of activity. And multi-lateralism is crucial to success. Thus it cannot be left only to energy and environment ministers. This is about managing an international economic transition. Heads of government and finance ministers have to be at the heart of the story. The G8 as we saw in Gleneagles last year, can play a strong role.\n!V Adaptation\n* Finally, before I close let me emphasise the importance of adaptation. Much climate change is already on the way. It cannot be ignored. All countries have to adapt. The UK is leading the way through its Climate Impacts Programme. Much of adaptation is the building of resilience and flexibility, in other words sustainable development itself is the best adaptation for poor countries. Better information and crops that withstand heat, drought and floods can and should be developed internationally. Adaptation will cost poor countries $10 bns p.a. more for the necessary infrastructure alone. We must do all in our power, difficult though that is, to ensure delivery on the ODA commitments of Monterrey 2002, and the EU, and the Gleneagles summit of the G8 last year.\n<html><center><img src="slide-6.jpg"></center></html>\n* As the slide shows the trend of ODA is upwards. Meeting the commitment to reach 0.7% of GDP by 2015 (as for the EU) could support both current development ambitions and requirements for adaptation. It is vital that these resources are produced.\n!VI Conclusions\n* I have been able to sketch only the main lines of our analyses. We leave you to enjoy the 600 pages. Whilst there is much more we need to understand, both in science and economics, we know enough now to be clear about the magnitude of the risks, the time-scale for action and how to act effectively. That is why I am optimistic having done this Review that we have the time and the knowledge to act. But only if we act internationally, strongly and urgently.
/***\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
|[[Welcome]]|h\n|[[The Stern Review]]|h\n|[[Frequently Asked Questions]]|\n|[[Table of Contents]]|h\n|[[Executive Summary]]|h\n|[[Summary of Conclusions]]|\n|[[Science & scale, Economics & ethics|Part I]]|h\n|[[Impacts on growth & development|Part II]]|h\n|[[Economics of stabilisation|Part III]]|h\n|[[Policy responses for stabilisation|Part IV]]|h\n|[[Policy responses for mitigation|Part V]]|h\n|[[International collective action|Part VI]]|h\n|[[Acronyms]]|\n|[[Postscript]]|h\n|[[Responses to the Review]]|\n|[img[Cover of The Stern Review|the-stern-review.jpg]]|\n|[[Order the book]]|\n|[[NGO Committee on Education]]|\n|[[The Conference of NGOs|Conference of NGOs]]|\n|[img[Logo of the Conference of NGOs|congo.gif]]|\n|[[Technical Notes]]|\n|TiddlyWiki|\n<<tiddler "Administrative Menu">>\n<<redirect "Executive Summary" "Executive Summary">>\n<<redirect "Summary of Conclusions" "Summary of Conclusions">>\n<<redirect "Part I" "Part I">>\n<<redirect "Chapter 1" "Chapter 1">>\n<<redirect "Chapter 2" "Chapter 2">>\n<<redirect "Chapter 2: Annex A" "Chapter 2: Annex A">>\n<<redirect "Part II" "Part II">>\n<<redirect "Chapter 3" "Chapter 3">>\n<<redirect "Chapter 4" "Chapter 4">>\n<<redirect "Chapter 5" "Chapter 5">>\n<<redirect "Chapter 6" "Chapter 6">>\n<<redirect "Part III" "Part III">>\n<<redirect "Chapter 7" "Chapter 7">>\n<<redirect "Chapter 7: Annex A" "Chapter 7: Annex A">>\n<<redirect "Chapter 7: Annex B" "Chapter 7: Annex B">>\n<<redirect "Chapter 7: Annex C" "Chapter 7: Annex C">>\n<<redirect "Chapter 7: Annex D" "Chapter 7: Annex D">>\n<<redirect "Chapter 8" "Chapter 8">>\n<<redirect "Chapter 9" "Chapter 9">>\n<<redirect "Chapter 10" "Chapter 10">>\n<<redirect "Chapter 11" "Chapter 11">>\n<<redirect "Chapter 12" "Chapter 12">>\n<<redirect "Chapter 13" "Chapter 13">>\n<<redirect "Part IV" "Part IV">>\n<<redirect "Chapter 14" "Chapter 14">>\n<<redirect "Chapter 15" "Chapter 15">>\n<<redirect "Chapter 16" "Chapter 16">>\n<<redirect "Chapter 17" "Chapter 17">>\n<<redirect "Part V" "Part V">>\n<<redirect "Chapter 18" "Chapter 18">>\n<<redirect "Chapter 19" "Chapter 19">>\n<<redirect "Chapter 20" "Chapter 20">>\n<<redirect "Part VI" "Part VI">>\n<<redirect "Chapter 21" "Chapter 21">>\n<<redirect "Chapter 22" "Chapter 22">>\n<<redirect "Chapter 23" "Chapter 23">>\n<<redirect "Chapter 24" "Chapter 24">>\n<<redirect "Chapter 25" "Chapter 25">>\n<<redirect "Chapter 26" "Chapter 26">>\n<<redirect "Chapter 27" "Chapter 27">>\n<<redirect "Acronyms & Abbreviations" "Acronyms & Abbreviations">>\n<<redirect "Postscript Technical Annex" "Postscript Technical Annex">>
<!--{{{-->\n<script src="http://www.google-analytics.com/urchin.js" type="text/javascript">\n</script>\n<script type="text/javascript">\n_uacct = "UA-2759737-1";\nurchinTracker();\n</script>\n<!--}}}-->
<!--{{{-->\n<meta name="description" content="The Economics of Climate Change: The Stern Review - a DataPerfect & TiddlyWiki microcontent guide for Education, Youth, Technology & Values for Sustainable Development & the UN Decade on Education for Sustainable Development ">\n<meta name="keywords" content="stern review,climate change,economics,global warming,urgent,tiddlywiki, dataperfect ">\n<meta name="dedication" content="To regeneration, healing, sustainability, human rights and peace on Earth & Decades of Education for Sustainable Development, for a Culture of Peace, Water for Life, Indigenous People & Literacy">\n<meta name="review" content="12 Apr 2007">\n<meta name="copyright" content="TiddlyWiki © 2006, Osmosoft; PluginMacros @ Clint Checketts, Simon Baird, Eric Shulman, Frank Dellaert: The Stern Review, © 2006 Crown copyright; Format & organization, © 2006, NGO Committee on Education of the Conference of NGOs in Consultative Relationship with the United Nations">\n<meta name="license" content="Creative Commons Attribution ShareAlike 2.5">\n<link href="http://www.climate-change-two.net/stern-review">\n<style type="text/css">#contentWrapper {display:none;}</style><div id="SplashScreen" style="border: 3px solid #ccc; display: block; text-align: center; width: 700px; margin: 20px auto; padding: 10px; color:#000; font-size: 13pt; font-family:bookman old style; background-color:#eee;">\n<span style="font-size: 24pt;"><b>The Economics of Climate Change: The Stern Review</b></span>\n<br>\nA TiddlyPerfect rendition and founding element of <b>Climate Change 2.0</b>\n<br>\nis loading<blink> ...</blink>\n<br><br>\n<span style="font-size: 14px; color:red;">Requires Javascript.</span></div>\n<!--}}}-->
''Menus'' - and the versatility of menus - - if understood and used creatively and systematically - play a key role in TiddlyPerfect site - and open up a plethora of opportunities to organize, present, and find the wealth of information that can live in the structured tiddlers of a TiddlyPerfect world. In a digital knowledge-based universe, the use of digital tools that offer you clear and simple hierarchical user-defined menus can play an invaluable role in easing one's journey in a digital world.\n\nThe [[NestedSlidersPlugin]], written by [[Udo Borkowski]] plays a vital role in [[TiddlyPerfect Menus]] - allowing the easy expansion or collapsing of multi-level menus.\n\n* [[Main Menu|MainMenu]] \n* [[Administrative Menus]]\n** [[Head Menu]]\n** [[Hover Menu|HoverMenu]] \n** [[Nesting Menus]]\n* [[Changing Menus]]\n* [[DataPerfect Menus]] \n* [[Browser Menus]] \n* [[Designing Menus]]\n* [[Building Menus]]\n* [[Desktop Menus]] \n* [[Digital Navigation]]\n* [[Learning Menus]]
<<list missing>>
The ''NGO Committee on Education'' - [[www.ngo-education.net|http://www.ngo-education.net]] - is a New York-based Substantive Committee of ''CONGO'' - the ''C''onference ''O''f ''N''on-''G''overnmental ''O''rganizations in Consultative Relationship with the United Nations - [[www.ngocongo.org|http://www.ngocongo.org]] . The Committee's primary focus is on the ''UN Decade of Education for Sustainable Development'' (2005-2014) and related Decades, and organized a workshop on ''[[Education, Youth & Technology for Sustainable Development|http://www.ngo-education.net/workshop]]'' at the ''59th Annual DPI/NGO Conference'' at UN Headquarters in September 2006.
Nathan is a web developer based in Los Angeles. His website is [[Snapgrid.com|http://snapgrid.com]]. Have questions, comments, or suggestions? Visit the GoogleGroup.
/***\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 and Options]>\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** closed {{{+++}}} and {{{===}}}\n** open {{{++++}}} and {{{===}}}\n>> mark the start and end of the slider definition, respectively. When the extra {{{+}}} is used, the slider will be open when initially displayed.\n*cookiename: {{{(cookiename)}}} - saves the slider opened/closed state, and restores this state whenever the slider is re-rendered.\n*heading level\n*floater: (with optional CSS width value)\n*mouse auto rollover: {{{*}}} ^^ automatically opens/closes slider on "rollover" as well as when clicked^^\n*custom class/label/tooltip/accesskey: {{{{{class{[label=key|tooltip]}}}}}} ^^uses 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*automatic blockquote: {{{">"}}} //(without the quotes)// ^^automatically adds blockquote formatting to slider content^^\n*deferred rendering\nThe complete syntax, using all options, is:\n//{{{\n++++(cookiename)!!!!!^width^*{{class{[label=key|tooltip]}}}>...\ncontent goes here\n===\n//}}}\n\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\n* \n*\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 suppressed 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//}}}
The goal of the ''Networking Sub-Committee'' of the [[Planning Committee]] for the [[60th Annual DPI/NGO Conference]] is to explore, discover and promote networking by and among NGOs in support of the preparation for, participation in and follow-up to the Conference, and the broad-based mobilization of civil society in addressing the dangers of climate change and the opportunities for viable, creative, remedial and mitigating responses.\n!!''Co-Chairs''\n* William Gellermann, ''Communications Coordination Committee for the United Nations''\n* Moses Williams, ''Olof Palme Peace Foundation''\n!! ''Members''\n* Pauline Cantwell, ''Peace Action''\n* Loretta Dumas, ''NJ Haiti Partners of the Americas''\n* Barbara Horne, ''Training At My Desk''\n* Ani Kalayjian, ''Armenian International Women's Association''\n* Moki Kokoris, ''90 North''\n* Pamela Kraft, ''Tribal Link Foundation''\n* Judy Lerner, ''Peace Action''\n* Kathy Liepe-Levinson, ''Institute of General Semantics''\n* Isobel Lowther, ''Kaleidoscope Experience''\n* Linda Misek-Falkoff, ''National Disability Party, Chronic Pain Caucus''\n* Gwen Moten, ''City of Newark, Cultural Affairs''\n* Jim Nelson, ''Unitarian Universalist Association''\n* Robert Pollard, ''Information Habitat: Where Information Lives''\n* Joann Robinson, ''Peace Action''\n* Joan Russow, ''Global Compliance Research Project''\n* George Weinstein, ''Jewish War Veterans''\n* Anne Zanes, ''Peace Links''\nIf you would like to participate in the vision and work of the ''Networking Committee'', please join the committee's Google Group: [[groups.google.com/group/ngo-networking|http://groups.google.com/group/ngo-networking]], or send an email to [[co-chairs@ngo-networking.net|mailto:co-chairs@ngo-networking.net]]
''The web based news aggregator that doesn't suck.''\n\n[[Newshutch|http://newshutch.com]] is a web based news reader by me and Doug Mc Innes. \n\nIf you like GTD Tiddly Wiki, you'll like [[Newshutch|http://newshutch.com]]. It's designed to make reading news feeds fun and easy again.\n\nGive it a try and let me know what you think. Thanks!
TiddlyWiki is published under a BSD OpenSourceLicense that gives you the freedom to use it pretty much however you want, including for commercial purposes, as long as you keep my copyright notice. I'd appreciate a link back to http://www.tiddlywiki.com as well.
Paperback copies of ''The Stern Review'' will be available from January at a charge of c. £29.99 + £3.50 postage and packing (within the UK) (quoting ISBN number: 0-521-70080-9). Copies can be ordered from ''Cambridge University Press'' via their [[website|http://www.cambridge.org/9780521700801]], by fax on +44 (0)1223 315052 or post from the following address: Science Marketing, Freepost, Cambridge University Press, The Edinburgh Building, Cambridge, ~CB2.\n\nCopies of ''The Stern Review'' can also be ordered through your local bookseller; please provide the ISBN number when ordering the book, and can be ordered online from [[Amazon.com|http://www.amazon.com/Economics-Climate-Change-Stern-Review/dp/0521700809/sr=1-1/qid=1166018697/ref=sr_1_1/103-4797988-8101414?ie=UTF8&s=books]] at the price of $31.50 (paperback). Amazon is offering the book with DVD of ''[[An Inconvenient Truth|http://www.climatecrisis.net/]]'' for $51.49
<!--{{{-->\n\n<div class='header' macro='gradient vert [[ColorPalette::PrimaryLight]] [[ColorPalette::PrimaryMid]]'>\n <div class='headerShadow'>\n <span class='siteTitle' refresh='content' tiddler='SiteTitle'></span>&nbsp;\n <span class='siteSubtitle' refresh='content' tiddler='SiteSubtitle'></span>\n </div>\n <div class='headerForeground'>\n <span class='siteTitle' refresh='content' tiddler='SiteTitle'></span>&nbsp;\n <span class='siteSubtitle' refresh='content' tiddler='SiteSubtitle'></span>\n </div>\n</div>\n\n<div id='mainMenu' refresh='content' tiddler='MainMenu'>\n</div>\n\n<div id='displayArea'>\n <div id='messageArea'></div>\n <div id='tiddlerDisplay'></div>\n</div>\n\n<!--}}}-->
!Climate change - our approach\n!!Introduction\nPart I of the Review considers the nature of the scientific evidence for climate change, and the nature of the economic analysis required by the structure of the problem which follows from the science.\n* The first half of the Review examines the evidence on the economic impacts of climate change itself, and explores the economics of stabilising greenhouse gas concentrations in the atmosphere. The second half of the Review considers the complex policy challenges involved in managing the transition to a low-carbon economy and in ensuring that societies can adapt to the consequences of climate change that can no longer be avoided.\n* The Review takes an international perspective. Climate change is global in its causes and consequences, and the response requires international collective action.\n* Working together is essential to respond to the scale of the challenge. An effective, efficient and equitable collective response to climate change will require deeper international co-operation in areas including the creation of price signals and markets for carbon, scientific research, infrastructure investment, and economic development.\n* Climate change presents a unique challenge for economics: it is the greatest example of market failure we have ever seen. The economic analysis must be global, deal with long time horizons, have the economics of risk and uncertainty at its core, and examine the possibility of major, non-marginal change. Analysing climate change requires ideas and techniques from most of the important areas of economics, including many recent advances.\n''Part I is structured as follows'':\n* Chapter 1 examines the latest scientific evidence on climate change. The basic physics and chemistry of the scientific understanding begins in the 19th century when Fourier, Tyndall and Arrhenius laid the foundations. But we must also draw on the very latest science which allows a much more explicit analysis of risk than was possible five years ago.\n* Chapter 2 considers how economic theory can help us analyse the relationship between climate change and the divergent paths for growth and development that will result from 'business as usual' approaches and from strong action to reduce emissions. We look at the range of theories required and explain some of the technical foundations necessary for the economics that the scientific analysis dictates.\n* The technical annex to Chapter 2 addresses the complex issues involved in the comparison of alternative paths and their implications for individuals in different places and generations. Building on Chapter 2, we explore the ethical issues concerning the aggregation of the welfare of individuals across time, place and uncertain outcomes. This annex also provides a technical explanation of the approach to discounting used throughout the Review, and in particular in our own analysis of the costs of climate change impacts.\n----\nDownload pdf version of Part I\nhttp://www.climate-change-two.net/stern-review/part-1.pdf 54pp. (1.1 Mb)\n\nPapers prepared for Part I of the ''Stern Review''\n* [[Discounting climate change damages|http://www.economics.ox.ac.uk/members/cameron.hepburn/Hepburn%20(2006)%20Stern%20review%20discounting.pdf]]\n** Cameron Hepburn, St Hugh's College, University of Oxford\n* [[Valuing policies in response to climate change: some ethical issues|http://www.hm-treasury.gov.uk/media/8A7/74/stern_review_supporting_technical_material_john_broome_261006.pdf]]\n** John Broome, University of Oxford
!Impacts of climate change on growth and development\n!!Introduction\nPart II considers how climate change will affect people's lives, the environment and the prospects for growth and development in different parts of the world. All three dimensions are fundamental to understanding how climate change will affect our future.\n* These effects will not be felt evenly across the globe. Although some parts of the world would benefit from modest rises in temperature, at higher temperature increases, most countries will suffer heavily and global growth will be affected adversely. For some of the poorest countries there is a real risk of being pushed into a downwards spiral of increasing vulnerability and poverty.\n* Average global temperature increases of only 1-2°C (above pre-industrial levels) could commit 15-40 percent of species to extinction. As temperatures rise above 2-3°C, as will very probably happen in the latter part of this century, so the risk of abrupt and large-scale damage increases, and the costs associated with climate change - across the three dimensions of mortality, ecosystems and income - are likely to rise more steeply. In mathematical terms, the global damage function is convex.\n* No region would be left untouched by changes of this magnitude, though developing countries would be affected especially adversely. This applies particularly to the poorest people within the large populations of both sub-Saharan Africa, and South Asia. By 2100, in South Asia and Sub Saharan Africa, up to 145-220 million additional people could fall below the $2-a-day poverty line, and every year an additional 165,000-250,000 children could die compared with a world without climate change.\n* Modelling work undertaken by the Review suggests that the risks and costs of climate change over the next two centuries could be equivalent to an average reduction in global per capita consumption of at least 5%, now and forever. The estimated damages would be much higher if non-market impacts, the possibility of greater climate sensitivity, and distributional issues were taken into account.\n''Part II is structured as follows'':\n* Chapter 3 begins by exploring how climate change will affect people around the world, including the potential implications for access to food, water stress, health and well being, and the environment.\n* Chapter 4 focuses on the implications for developed countries. Some regions will benefit from temperature rises of up to 1 to 2°C, but the balance of impacts will become increasingly negative as temperature rises.\n* Chapter 5 considers the implications of climate change for developing countries. It explains why developing countries are so vulnerable to climate change - a volatile mix of geographic location, existing vulnerability and, linked to this, limited ability to deal with the pressures that climate change will create.\n* Chapter 6 aims to pull together the existing modelling work that has been done to estimate the monetary costs of climate change, and also sets out the detail of modelling work undertaken by the Review.\n----\nDownload pdf version of Part II\nhttp://www.climate-change-two.net/stern-review/part-2.pdf 113pp. (2 Mb)\n\nPapers prepared for Part II of the ''Stern Review''\n* [[Climate change impacts and its economics in China|http://www.hm-treasury.gov.uk/media/8A3/DD/stern_review_china_impacts.pdf]]\n** Lin Erda and Zhou Ji\n* [[Global and regional exposure to large rises in sea-level: a sensitivity analysis (Tyndall Centre Working Paper 96)|http://www.tyndall.ac.uk/publications/working_papers/twp96.pdf]]\n** David Anthoff and others, Tyndall Centre\n* [[Global impacts of abrupt climate change: an initial assessment|http://www.hm-treasury.gov.uk/media/8A3/7A/stern_review_supporting_technical_material_arnell_231006.pdf]]\n** Nigel Arnell, University of Southampton\n* [[Indian Monsoon|http://www.hm-treasury.gov.uk/media/8AB/D1/Challinor_et_al.pdf]]\n** Andrew Challinor and others, University of Reading\n* [[Potential impacts of climate change on $2-a-day poverty and child mortality in Sub-Saharan Africa and South Asia (forthcoming)|http://]]\n** Ed Anderson, ODI\n* [[Spotlighting the impacts functions in integrated assessments (Tyndall Centre Working Paper 91)|http://www.tyndall.ac.uk/publications/working_papers/twp91.pdf]]\n** Rachel Warren and others, Tyndall Centre\n* [[The economics of climate change: a review of studies in the context of South Asia with a special focus on India|http://www.hm-treasury.gov.uk/media/8AB/DE/roy.pdf]]\n** Joyashree Roy, Jadavpur University\n* [[The impacts of climate change in Africa: Main report|http://www.hm-treasury.gov.uk/media/8AD/9E/Chapter_5_The_Impacts_of_Climate_Change_in_Africa-5.pdf]]\n** JC Nkomo and others\n* [[The impacts of climate change in Africa: Summary matrix|http://www.hm-treasury.gov.uk/media/8AD/2B/africa_summary.pdf]]\n** JC Nkomo and others\n* [[Understanding the potential impact of climate change and variability in Latin America and the Caribbean|http://www.hm-treasury.gov.uk/media/8AB/E7/Nagy.pdf]]\n** Gustavo Nagy and others\n* [[Understanding the regional impacts of climate change (Tyndall Centre Working Paper 90)|http://www.tyndall.ac.uk/publications/working_papers/twp90.pdf]]\n** Rachel Warren and others, Tyndall Centre
!The economics of stabilisation\n!!Introduction\nPart III of the Review considers the economic challenges of achieving stabilisation of greenhouse gases in the atmosphere.\n* 'Business as usual' emissions will take greenhouse-gas concentrations and global temperatures way beyond the range of human experience. In the absence of action, the stock of greenhouse gases in the atmosphere could more than treble by the end of the century.\n* Stabilisation of concentrations will require deep emissions cuts of at least 25% by 2050, and ultimately to less than one-fifth of today's levels. The costs of achieving this will depend on a number of factors, particularly progress in bringing down the costs of technologies. Overall costs are estimated at around 1% of GDP for stabilisation levels between 500-550ppm CO~~2~~e.\n* The costs will not be evenly felt - some carbon-intensive sectors will suffer, while for others, climate change policy will create opportunities. Climate-change policies may also have wider benefits where they can be designed in a way that also meets other goals.\n* Comparing the costs and benefits of action clearly shows that the benefits of strong, early action on climate change outweigh the costs. The current evidence suggests aiming for stabilisation somewhere within the range 450-550ppm CO~~2~~e. Ignoring climate change will eventually damage economic growth; tackling climate change is the pro-growth strategy.\n''Part III is structured as follows'':\n* Chapter 7 discusses the past drivers of global emissions growth, and how these are likely to evolve in the future.\n* Chapter 8 explains what needs to happen to emissions in order to stabilise greenhouse-gas concentrations in the atmosphere, and the range of trajectories available to achieve this.\n* Chapter 9 discusses how to identify the costs of mitigation, and looks at a resource-based approach to calculating global costs.\n* Chapter 10 compares modelling approaches to calculating costs, and looks at how policy choices may influence cost.\n* Chapter 11 considers how climate change policies may affect competitiveness if they are not applied evenly worldwide.\n* Chapter 12 looks at how to take advantage of the opportunities and wider benefits arising from action on climate change.\n* Chapter 13 brings together the analysis of costs and benefits, and looks at how a global long-term goal for climate change policy can be defined.\n\nPapers prepared for Part III of the ''Stern Review''\n* [[Costs and finance of abating carbon emissions in the energy sector|http://www.hm-treasury.gov.uk/media/8A3/32/stern_review_supporting_technical_material_dennis_anderson_231006.pdf]]\n** Dennis Anderson, Imperial College\n* [[Key trends in emissions from agriculture and use of policy instruments|http://www.hm-treasury.gov.uk/media/A9C/1C/stern_review_supporting_technical_material_norse_021106.pdf]]\n** David Norse, UCL\n* [[The costs of greenhouse gas mitigation with induced technological change: a meta-analysis of estimates in the literature|http://www.hm-treasury.gov.uk/media/8A7/01/ster_review_supporting_technical_material_terry_barker_231006.pdf]]\n** Terry Barker and others, 4CMR, University of Cambridge
!Policy responses for mitigation\n!!Introduction\nThe first half of this Review has considered the evidence on the economic impacts of climate change itself, and the economics of stabilising greenhouses in the atmosphere. Parts IV, V and VI now look at the policy response.\n* The first essential element of climate change policy is carbon pricing. Greenhouse gases are, in economic terms, an externality: those who produce greenhouse gas do not face the full consequences of the costs of their actions themselves. Putting an appropriate price on carbon, through taxes, trading or regulation, means that people pay the full social cost of their actions. This will lead individuals and businesses to switch away from high-carbon goods and services, and to invest in low-carbon alternatives.\n* But the presence of a range of other market failures and barriers mean that carbon pricing alone is not sufficient. Technology policy, the second element of a climate change strategy, is vital to bring forward the range of low-carbon and high-efficiency technologies that will be needed to make deep emissions cuts. Research and development, demonstration, and market support policies can all help to drive innovation, and motivate a response by the private sector.\n* Policies to remove the barriers to behavioural change are a third critical element.\n* Opportunities for cost-effective mitigation options are not always taken up, because of a lack of information, the complexity of the choices available, or the upfront cost.\n* Policies on regulation, information and financing are therefore important. And a shared understanding of the nature of climate change and its consequences should be fostered through evidence, education, persuasion and discussion.\n* The credibility of policies is key; this will need to be built over time. In the transitional period, it is important for governments to consider how to avoid the risks that longlived investments may be made in high-carbon infrastructure.\n''Part IV is structured as follows'':\n* Chapter 14 looks at the principles of carbon pricing policies, focusing particularly on the difference between taxation and trading approaches.\n* Chapter 15 considers the practical application of carbon pricing, including the importance of credibility and good policy design, and the applicability of policies to different sectors.\n* Chapter 16 discusses the motivation for, and design of, technology policies.\n* Chapter 17 looks at policies aimed at removing barriers to action, particularly in relation to the take-up of opportunities for energy efficiency, and at how policies can help to change preferences and behaviour.\n----\nDownload pdf version of Part IV\nhttp://www.climate-change-two.net/stern-review/part-4.pdf 95pp. (578 Kb)\n\nPapers prepared for Part IV of the ''Stern Review''\n* [[Aligning climate and energy policy - creating incentives to invest in low carbon technologies in the context of linked markets for fossil fuel, electricity and carbon|http://www.chathamhouse.org.uk/pdf/research/sdp/Stern210406.pdf]]\n** William Blyth and Kirsty Hamilton, Chatham House\n* [[China: Prospect for renewable energy development|http://www.hm-treasury.gov.uk/media/999/B2/Final_Draft_China_Mitigation_Renewables_Sector_Research.pdf]]\n** Li Junfeng, Shi Jinli and Ma Lingjuan\n* [[Chinese iron and steel industry development and environment protection|http://www.hm-treasury.gov.uk/media/9DF/91/final_draft_china_mitigation__iron_and_steel_sector.pdf]]\n** Zhang Qun, Beijing University of Science and Technology\n* [[Climate Change Mitigation Strategies for the Transportation Sector in China|http://www.hm-treasury.gov.uk/media/999/C3/Final_Draft_China_Mitigation_Transport_Sector_Research.pdf]]\n** The Auto Project\n* [[Climate change, mitigation and adaptation with uncertainty and learning|http://www.hm-treasury.gov.uk/media/8AA/92/stern_review_supporting_technical_material_alan_ingham_231006.pdf]]\n** Alan Ingham, University of Southampton\n* [[Climate policy in the face of uncertainty: the roles of adaptation and mitigation|http://www.hm-treasury.gov.uk/media/8AA/87/stern_review_supporting_technical_material__richard_klein_231006.pdf]]\n** Richard Klein, Potsdam\n* [[Efficiency Improvement and Energy Conservation in China's Power Industry|http://www.hm-treasury.gov.uk/media/9A0/D9/final_draft_china_mitigation_power_generation_sector.pdf]]\n** Zhang Anhua and Zhao Xingshu\n* [[Regulating by prices, quantities or both: an update and an overview|http://www.economics.ox.ac.uk/members/cameron.hepburn/Hepburn%20(2006,%20Oxrep)%20Regulation%20by%20P%20or%20Q.pdf]]\n** Cameron Hepburn, St Hugh's College, University of Oxford\n* [[Understanding China's energy policy: economic growth and energy use, fuel diversity, energy/carbon intensity, and international cooperation|http://www.hm-treasury.gov.uk/media/5FB/FE/Climate_Change_CASS_final_report.pdf]]\n** Research Centre for Sustainable Development, Chinese Academy of Social Science
!Policy responses for adaptation\n!!Introduction\nPart V of the Review analyses adaptation as a response to climate change.\n* Climate is a pervasive factor in social and economic development - one so universally present and so deeply ingrained that it is barely noticed until things go wrong. People are adapted to the distinct climate of the place where they live. This is most obvious in productive sectors such as agriculture, where the choice of crops and the mode of cultivation have been finely tailored over decades, even centuries, to the prevailing climate. But the same is true for other economic sectors that are obviously weather-dependent, such as forestry, water resources, and recreation. It is also evident in how people live their daily lives, for instance in working practices.\n* Adaptation will be crucial in reducing vulnerability to climate change and is the only way to cope with the impacts that are inevitable over the next few decades. In regions that may benefit from small amounts of warming, adaptation will help to reap the rewards. It provides an impetus to adjust economic activity in vulnerable sectors and to support sustainable development, especially in developing countries. But it is not an easy option, and it can only reduce, not remove, the impacts. There will be some residual cost - either the impacts themselves or the cost of adapting. Without early and strong mitigation, the costs of adaptation rise sharply.\n''Part V is structured as follows''.\n* Chapter 18 outlines key adaptation concepts and sets out an economic framework for adaptation.\n* Chapter 19 examines the barriers and constraints to adaptation identified in this chapter. It sets out how governments in the developed world can promote adaptation by providing information and a policy framework for individuals to respond to market signals.\n* Chapter 20 explores the particular issue of how developing countries can adapt to climate change. Developing countries lack the infrastructure, financial means, and access to public services that would otherwise help them adapt. The chapter shows the importance of support from the international community, and the need for investment in global public goods such as the development of resistant crops.\n----\nDownload pdf version of Part V\nhttp://www.climate-change-two.net/stern-review/part-5.pdf 46pp. (280 Kb)\n\nPapers prepared for Part V of the ''Stern Review''\n* [[Assessing the costs and benefits of adaptation to climate change|http://www.hm-treasury.gov.uk/media/8A7/6A/stern_review_supporting_technical_material_jane_milne_231006.pdf]]\n** Jane Milne, ABI\n* [[Assessing the costs and benefits of adaptation: perspectives from the front line|http://www.hm-treasury.gov.uk/media/8A6/E2/ster_review_supporting_technical_material_merylyn_hedger_231006.pdf]]\n** Merylyn Hedger, Environment Agency\n* [[Climate risk management for development: economic considerations|http://www.hm-treasury.gov.uk/media/8A7/87/stern_review_supporting_technical_material_molly_hellmuth_231006.pdf]]\n** Mac Callaway and Molly Hellmuth, UNEP & IRI, Columbia University\n* [[Costing the local and regional impacts of climate change using the UKCIP costing methodology|http://www.hm-treasury.gov.uk/media/8AA/A6/stern_review_supporting_technical_material_boyd_&_hunt_231006.pdf]]\n** Richard Boyd and Alistair Hunt, Metroeconomica\n* [[Rationale for adaptation in EU climate change policies|http://www.hm-treasury.gov.uk/media/8AA/9C/stern_review_supporting_technical_material_frans_berkhout_231006.pdf]]\n** Frans Berkhout, Free University, The Netherlands\n* [[Statement to the workshop on economics of adaptation|http://www.hm-treasury.gov.uk/media/8A7/93/stern_review_supporting_technical_material_salmeel_huq_231006.pdf]]\n** Saleemul Huq, IIED\n* [[The economics of adaptation|http://www.hm-treasury.gov.uk/media/8A7/7E/stern_review_supporting_technical_material_karen_obrien_231006.pdf]]\n** Karen O'Brien, University of Oslo\n* [[The economics of adaptation|http://www.hm-treasury.gov.uk/media/8A7/9E/stern_review_supporting_technical_material_sam_fankhauser_231006.pdf]]\n** Sam Fankhauser, EBRD
!International collective action\n!!Introduction\nPart VI of the Review considers the challenges of building and sustaining frameworks for international collective action on climate change.\n* It considers the various dimensions of action that will be required to reduce the risks of climate change: both for mitigation (including through carbon prices and markets, interventions to support low-carbon investment and technology diffusion, cooperation on technology development and deployment, and action to reverse deforestation), and for adaptation.\n* These dimensions of action are not independent. For example, a carbon price is essential to provide incentives for investment in low-carbon technology around the world, and can be strongly complemented by international co-operation to bring down the costs of new low-carbon technologies. The success of international co-operation on mitigation will determine the scale of action required for adaptation.\n''Part VI is structured as follows'':\n* Chapter 21 provides a framework for understanding international collective action, drawing on insights from game theory and international relations, and sets out an overview of existing international co-operation on climate change.\n* Chapter 22 examines the challenge of creating a broadly comparable price for carbon around the world. It considers what can be learned from the implementation of the Kyoto Protocol, and looks at the scope for expanding and linking emissions trading schemes.\n* Chapter 23 considers how the transition to a global low-carbon economy can be accelerated through action to promote the diffusion of technology and investment in low-carbon infrastructure in developing countries and economies in transition. It explores current arrangements including the Clean Development Mechanism and considers how flows of carbon finance can be transformed to respond to the scale of the challenge.\n* Chapter 24 provides an analysis of how international co-operation can accelerate innovation in low-emission technologies and in technologies for adaptation.\n* Chapter 25 considers the opportunities that exist to reverse the emissions from land use, and in particular the challenge of providing economic incentives to reduce deforestation.\n* Chapter 26 examines how international arrangements for adaptation can support national efforts and contribute to an equitable international approach.\n* Chapter 27 brings the Review to a conclusion, emphasising the importance of building and sustaining international collective action on climate change.\n----\nDownload pdf version of Part VI\nhttp://www.climate-change-two.net/stern-review/part-6.pdf 127pp. (774 Kb)\n\nPapers prepared for Part VI of the ''Stern Review''\n* [[A theoretical note on cross-border interactions between carbon abatement schemes|http://www.hm-treasury.gov.uk/media/8AB/F5/tse.pdf]]\n** Max Tse, Nuffield College, University of Oxford\n* [[Climate change and rice cropping systems: potential adaptation and mitigation strategies|http://www.hm-treasury.gov.uk/media/8AA/C0/stern_review_supporting_technical_material_irri_231006.pdf]]\n** International Rice Research Institute\n* [[Technology based CDM: a conceptual framework|http://www.hm-treasury.gov.uk/media/999/BB/Final_Draft_China_Mitigation_Technology_CDM_research.pdf]]\n** Duan Maosheng, Tsinghua University, Beijing\n* [[The cost of avoiding deforestation|http://www.hm-treasury.gov.uk/media/8A7/17/stern_review_supporting_technical_m_greiggran_261006a.pdf]]\n** Maryanne Grieg-Gran, IIED
<<tiddler PluginManager>>
The Review on the Economics of Climate Change, published on 30th October, has generated substantial interest and debate. We have now had the opportunity to present the Review to a wide range of audiences, including economists, scientists, business leaders and the international community, including the participants in the Nairobi Conference of the Parties to the UNFCCC, and to policy-makers at the European Commission and the African Union.\n\nIn this postscript, we offer some reflections in the light of the reactions and comments we have received in the first weeks since publication. In the main text, we have also taken the opportunity to correct any typographical errors found or which have been drawn to our attention. For example, revising the magnitude of hurricane losses in table 5.2. The discussion here follows the structure of the Review. The first issues concern the strength of the evidence base underpinning the recommendation of the Review that all countries should take urgent action to stabilise the concentration of greenhouse gases in the atmosphere at between 450-550ppm CO~~2~~e. The second set of issues concern the policy mechanisms that will support an effective, efficient and equitable approach to this action, and the importance of international co-operation to support adaptation to the adverse impacts of climate change.\n!!The case for urgent action\nTwo key conclusions from our analyses of the science and economics of climate change provide important underpinning for the case for urgent action.\n\nFirst, under a business-as-usual scenario, the stock of greenhouse gases could be more than treble pre-industrial (greater than 850ppm CO~~2~~e) by the end of the century. This may be a conservative estimate, for example, some IPCC scenarios suggest that the stock could be more than four times pre-industrial by 2100. Current scientific understanding suggests that a trebling of the stock would give at least a 50% risk of temperatures exceeding 5°C above pre-industrial levels during the following decades (Chapter 1).\n\nIn Part II of the report we brought together what can be said about impacts at high temperatures, based on the current state of the underlying science. This analysis has brought us to our second broad conclusion that the impacts of climate change across multiple dimensions are likely to be highly convex, with marginal damages that increase strongly as temperatures rise. Most impacts analyses focus on levels of warming of around 2 - 3°C above pre-industrial. Little is known about how the environment and human society will respond to larger increases in temperature. A warming of 5°C on a global scale would be well outside the experience of human civilisation, and would transform where we live and how we live our lives.\n\nThe analyses presented in [[Chapters 3 - 5|Part II]] of the report demonstrate the great dangers of allowing temperatures to continue to rise, in terms of the environment, human health, and economic growth and development. Chapter 3 demonstrates that many of the impacts of climate change increase strongly in severity as temperatures rise. For example, the damage caused by hurricanes; the frequency of extreme events; and above a threshold, effects on agricultural production and heat-related mortality. Further, impacts can interact, bringing about rapid increases in damages at high temperatures: rising levels of pests in some areas may aggravate declines in agricultural production caused by heat or changes in water availability. In addition, current understanding suggests that at high levels of warming, the risks of major, irreversible changes to the climate, ecosystems and society are very real indeed. These include physical changes, such as a collapse of ocean currents, and also the risk of major societal changes, such as mass migrations and political instability. Putting all these impacts together builds a strong picture of impacts rapidly rising with temperatures, with increasing damages for each marginal increase in temperature. High temperatures are likely to generate a hostile and extreme environment for human activity in many parts of the world.\n\nIt is the scale of these risks and an appreciation of the types and severity of damages involved that provide the main case for urgent and strong action to stabilize emissions below 550 ppm CO~~2~~e, when one considers that the risks can be very substantially reduced by an expenditure of around 1% of GDP per year. Further, the costs of action to stabilize at any given level would rise rapidly if action were delayed.\n\nIn Chapter 6, as a complement to the disaggregated analysis, we investigated the role of formal economic modelling in providing an aggregate monetary estimate of the damages of climate change. We were explicit and clear about the severe limitations of such modelling, but we saw it as a perspective, which could provide some support, by adding structure, to an analysis of the case for action based on the disaggregated impacts.\n\nAs we made clear, the role of integrated assessment models is to give an illustration of the potential effects of climate change. Modelling of the economic impacts of climate change over very long time horizons cannot give precise results. The value of the approach is that it allows the investigation of the role of different specifications of model structure and ethical assumptions. The ethical judgements that have to be examined include those concerning how society should weight impacts on different generations. The impacts have been expressed in this Review using a technique that allows averaging over time, over risk and over country in a way that permits direct comparison with the costs of mitigation.\n\nTwo main modelling issues have been raised with us in discussions since the Review was published: first, concerns that the model we used may under-estimate the level of damages likely to be caused at different temperatures, particularly high temperatures, and second, concerns about the assumptions used in valuing or discounting the damages. The former is captured in the parameters of the function relating damages to temperature and the latter in the shape of the relationship of social utility to consumption and the pure time discount rate (see Chapter 2, [[its appendix|Chapter 2: Annex A]] and Chapter 6).\n\nWe have subsequently carried out sensitivity analysis on these issues, presented in a technical annex to this postscript. The sensitivity analysis allows us to explore the effect of different assumptions, but it does not change our overall conclusion, that climate change is likely to cause damages which are very severe and of much greater consequence than the costs of greatly reducing risks by strong reduction in emissions. In the report we calculated damages from business-as-usual which were equivalent to at least a 5% loss in consumption, based on a narrow definition of risks and impacts, and up to 20% if a broader range of risks and impacts are considered. The sensitivity analysis marginally reduces the lower end and increases the upper end. The only exception is where we use high pure time discounting rates, which are in our view implausible relative to most positions on ethical values and take a very narrow view of impacts (i.e. excluding environment and health). In other words, unless the interests of future generations are heavily disregarded there is a very powerful case for strong mitigation.\n\nOur estimates of damage from business-as-usual are higher than some previously published for the following sound reasons:\n* We treat aversion to risk explicitly - this issue is all about risk and we invoke the economics of risk directly.\n* We use the more recent literature, from the science, on the probabilities. This points to significant risks of temperature increases above 5°C under business-for-usual by the early part of the next century. Previous studies have focused on temperature increases of 2 or 3°C. The damages from 5°C would be very much higher - damages rise much faster than temperature.\n* We adopt lower pure time discount rates than some earlier literature and thus, it was argued in Chapter 2 and [[its Appendix|Chapter 2: Annex A]], the analysis gives future generations appropriate ethical weight. The effects of changing this assumption were set out clearly in Chapter 2 and its appendix, Chapter 6 and are explored in more detail in the [[Technical Annex to this postscript|Postscript Technical Annex]].\n* We take account of the disproportionate impacts on poor regions, reflecting the fact that those in poverty will feel losses in consumption more keenly.\nFew existing studies include all these factors, and as a result their estimates of the damages tend to be lower. One can compare these losses with the size of the losses from a recession, but climate impacts are actually more like an adverse supply-side shock than a large contraction in demand. And they are much more difficult to reverse. Our estimate in terms of per annum consumption losses (averaged over time, possible outcomes and across countries) of the costs of climate change can be interpreted as like a tax being levied each year, with the proceeds of the tax simply being poured down the drain. You could also think of it like an insurance premium - society would be willing to pay up to this amount to avoid the risks of climate change - in fact the actual cost of action to avoid climate change is much less, as Chapters [[9|Chapter 9] and [[10|Chapter 10]] of the Review show, and as we will discuss again briefly below.\n\nOur analysis leads us to the conclusion that the risks can be substantially reduced, but by no means eliminated, if concentrations of greenhouse gas emissions can be stabilised at 550ppm CO~~2~~e or below. The upper limit, 550ppm CO~~2~~e, is still a risky place to be. The analysis presented in the Review, based on an average of several models, suggests a 50:50 chance of a temperature increase above or below 3°C, and the Hadley Centre model predicts a 10% chance of exceeding 5°C even at this level (Chapter 8). Whilst the modelling of Chapter 6 and Part II of the Review in general, brought together in Chapter 13, suggests that the damage from a 550ppm CO~~2~~e stabilisation level is far smaller than business as usual, many people have suggested that this limit is too high. There is a strong case to examine whether it is possible to reduce these risks still further by reaching lower levels of stabilisation, and to keep this continually under review as policy-makers gain experience in managing the transition to a low-carbon economy.\n\nThe Review finds that the costs of bringing down the risks by stabilising at 500-550ppm CO~~2~~e are equivalent to around 1% of GDP by the middle of the century, with a range of +/-3%. This range assumes that sensible policies are put in place and deliver the induced technological progress required. Some people have questioned whether the central estimate of 1% is too low, and others have suggested that while the overall level may be acceptable, the distribution of the costs may give rise to an unacceptable burden on some countries or sectors.\n\nIn response to the suggestion that the estimate of 1% is too low, it is worth noting a number of points. The figure of 1% is a central estimate within a range that is consistent with the literature, and that is therefore likely to be consistent with the review of the same literature currently being finalised by the Intergovernmental Panel on Climate Change for its Fourth Assessment Report. Achieving stabilisation at the lower end of the range of costs depends upon good policy frameworks, to bring forward appropriate low-carbon technologies and to provide flexibility in when, where and how emissions are reduced. The cost of 1% of GDP each year is certainly not trivial - in 2050 it would be equivalent to a cost of $1 trillion at market exchange rates (GDP in 2050 is expected to be $100 trillion). But this is manageable without slower growth. An overall cost of around 1% of GDP to achieve stabilisation below 550 ppm CO~~2~~e, as suggested here, would have an impact similar to a one-off 1% rise in price or cost indices. However, if investments in the next two or three decades were made in high-carbon infrastructure, it could cost far more than 1% subsequently to reduce the resulting emissions to levels consistent with stabilisation below 550ppm CO~~2~~e.\n\nAs we made clear in Chapters [[11|Chapter 11]] and [[12|Chapter 12]], the costs of mitigation will not be evenly distributed across industry sectors. Carbon-intensive sectors will face higher costs, and it is right to consider the impacts of these costs on their competitiveness. Similarly, the costs of unabated climate change will fall more heavily on sectors that depend upon environmental resources, such as agriculture and tourism.\n\nIf all countries act in a broadly similar way, the impacts on competitiveness from action to mitigate climate change will be small for all of them. Where different policies are in place in different countries for mitigation, it is important to assess the increased carbon costs in the context of overall conditions for doing business in a particular country or region. For many industries, the impact of any higher energy costs associated with mitigation is very small in relation to the cost differentials of different wage rates between rich and poor countries or to transport costs over long distances. For a small number of internationally traded, carbon-intensive sectors, including aluminium and cement, it may make sense to develop specific sectoral arrangements that provide an international framework to support the efforts of those industries to upgrade their equipment and processes and reduce or offset their emissions. And it is important to recognise that the new technologies and investments will open up new economic opportunities.\n\nWhile action is delayed, greenhouse gases in the atmosphere continue to accumulate, committing the world to greater impacts in the future or to the higher costs of bringing down flows of emissions more sharply to attain any stabilisation level. This cost of delay is a key element in the argument for urgent action.\n\nOverall, we have heard three main arguments from those who do not support the conclusion that urgent action to reduce the risks of climate change, economically speaking, is a good deal. We suggest that all three are misplaced.\n\n''1) Some still deny the science of climate change.''\n<<<\nThere are legitimate debates over many particular details of the climate system, but it is no longer credible to doubt the underlying physical mechanisms associated with increases in greenhouse gases in the atmosphere, nor to doubt the importance of the natural carbon cycle and the potential for amplifying feedbacks that would be outside our control.\n\n2) Some people accept the basic science, but still believe it is preferable to wait and see before taking significant action on mitigation. Some suggest a new technology will come along that will greatly reduce the costs of action, or that the changes will be such that future generations, with a higher capital stock available to them, will be able to adapt.\n<<<\nIt is certainly true that for most countries, major transformational damages affecting the whole economy are not likely to be seen for several decades, or even a century or more - but if we wait until they appear and they are as difficult as we have reason to expect then we cannot go into reverse. Stocks of greenhouse gases are extremely difficult to reduce.\n\nThe range of human activity that gives rise to emissions is so broad, that there will be no single technology breakthrough that will bring about stabilisation. Further, technology development is not independent of the policy framework that is in place. The range of technologies required can only be brought forward by an appropriate policy framework.\n\nAdaptation is necessary, but it is not the whole answer. The longer stocks of greenhouse gases are allowed to accumulate in the atmosphere, the greater the impacts to which we are committing the world. There are limits to adaptation at higher temperatures. Many of the effects could involve major dislocation, to whole nations and regions, with consequences that would be felt around the world. The only way to prevent very high future damages is to reduce greenhouse gas emissions today.\n\nWe should recognise the balance of risks. If the science is wrong and we invest 1% of GDP in reducing emissions for a few decades, then the main outcome is that we will have more technologies with real value for energy security, other types of risk and other types of pollution. However, if we do not invest the 1% and the science is right, then it is likely to be impossible to undo the severe damages that will follow. The argument that we should focus investment on other things, such as human capital, to increase growth and make the world more resilient to climate change is not convincing because of these irreversibilities and the scale and nature of the impacts. Similarly if we wait and see for 30 or 40 years then we are likely to go past the 550ppm (CO~~2~~e) that we argued would be a plausible upper limit. We might try to move rapidly from there but one cannot stop emissions in their tracks without great cost and disruption, if indeed it is feasible.\n<<<\n3) Some people prefer to place very low value on the future, or to put it another way, to place a very high value on near-term opportunities for consumption. It is a key feature of the challenge of climate change that we must think long-term to understand the issues and to respond to them. It will always be possible to choose a pure time discount rate that makes the benefit of reducing future damages appear trivial.\n<<<\nIn the Review, we do discount future damages for the likelihood that future generations will be richer than we are. But we apply only a low discounting to the future simply because it is the future (we account for the possibility of extinction). Choosing a high rate of pure time preference to analyse a long-term issue that affects the global environment is to make a profound ethical choice with, in this case, irreversible effects on future generations. It is as though a grandparent is saying to their grandchild, because you will live your life 50 years after mine, I place far less value on your well-being than I do on myself and my current neighbours, and therefore I am ready to take decisions with severe and irreversible implications for you. Nevertheless ethical choices appear different to different people and that is why in the technical appendix to this postscript we investigate different possible ethical positions concerning inequality and pure time discounting. The conclusion that strong mitigation is warranted is robust except where high pure time discounting is embraced.\n\nAn alternative view, associated with Bjorn Lomborg, that it is agreed, places dealing with climate change low on the agenda, arises from comparing it with "other ways" of spending public money and suggests that they have higher social rates of return. There are important deficiencies in this approach. First, correcting an externality is a different policy question from spending public money. Second, the argument as conveniently put takes little account of the severe risks of very high temperature increases from climate change which we now know are possible, or indeed likely, under business as usual, and which cannot be reversed if they start to appear. Third, the costs of action for any given stabilisation level rise rapidly if action is delayed. Thus, this type of argument for low priority or for delay is completely unconvincing.\n<<<\n!!Responding to the challenge\nWe have also received comments and reactions to the policy issues discussed in the second half of the Review - the policy instruments to promote mitigation, approaches to adaptation, and the international framework.\n\nMany people have welcomed the breadth of discussion on policy instruments, including the emphasis on the importance of all three strands of policy intervention - correcting the market failure on greenhouse gases, technology policy, and complementary measures to remove other barriers and to change perspectives on responsible behaviour. There has also been strong interest in the potential of each of tax, trading and regulation to play a role in the creation of a carbon price. We have been asked several times about the relative importance of each of these three approaches.\n\nThe answer to these questions must be guided by the principles of effectiveness (in terms of delivering greenhouse gas emission reductions), efficiency and equity. For different countries and different sectors, different approaches are likely to prove appropriate and effective. Many European countries have high fuel taxes, whereas in the USA regulation of vehicle efficiency standards has historically been more important. In the EU, emissions trading has from the outset taken the form of a mandatory cap and trade scheme, while in Japan and for some businesses in the USA, voluntary approaches are proving helpful in building up experience of using this instrument. For some areas, for example household appliances, labelling and standards are likely to bring about the fastest changes. Efficiency does not require that all these approaches be merged into one single scheme, but it does require that across countries and policies, a broadly similar price of carbon emerges. Otherwise, some sectors will be carrying a greater burden of emissions reductions when there are more cost-effective opportunities elsewhere. Equity does not mean that poorer countries should take no action to reflect the price of carbon in their own economies - otherwise producers and consumers in those countries will not see the signals that are required to support a transition to a low-carbon economy - but it does mean that these countries should be supported by rich countries in the process of managing the adjustments.\n\nEmissions trading is particularly well suited to addressing both efficiency and equity across borders. If the rich countries set ambitious targets, consistent with the overall objective of achieving stabilisation between 450-550ppm CO~~2~~e, emissions trading will allow the private sector in those countries to seek out the most cost-effective opportunities to reduce emissions. Some of these opportunities will be at home - provided the signal is strong, credible and long-term, the carbon price will discourage further investment in high-carbon capital stock in rich countries. But many of the opportunities in the short term will be in developing countries, and trading can create substantial flows of carbon finance that will allow developing countries to avoid locking in new high-carbon infrastructure during the next few years, when substantial growth and investment is likely to take place. These flows must be supported by effective mechanisms, linked to national or sectoral policies and programmes to move away from carbon-intensive investment strategies. Such large-scale flows from the rich countries combined with strategic national or sectoral approaches in developing countries have the potential to transform the carbon intensity of the global economy, without capping national aspirations for growth and development in poor and rich countries. A project-by-project approach to such flows is very unlikely to be able to deliver the results required, either in terms of the effectiveness of emissions reductions or the potential scale of flows from rich to poor countries. Programme or policy-orientated schemes will be necessary to manage flows on a much larger scale.\n\nLarge-scale international flows of carbon finance will go a long way to addressing the issues of equity. However, the least developed countries have the fewest opportunities to benefit from private sector investment in emissions reductions. For some people, this suggests that a more equitable international framework would be based on equal per capita rights to emit. This view has some attractions but there are some practical and conceptual problems, which were discussed in Chapter 22. An alternative approach is to consider the challenges for the poorest countries directly. International co-operation can support access to clean, low-carbon energy for poor people, as demonstrated by the initiative of the World Bank and others in creating Clean Energy Investment Frameworks with a specific focus on energy access. The initiative on removing barriers to the use of the CDM in developing countries, launched at the Nairobi Conference of the Parties to the UNFCCC, also has the potential to increase the use of carbon finance in poorer countries. The underlying investment conditions for foreign and domestic private capital are fundamental to the success of such initiatives.\n\nIt is of great importance to move quickly on those actions and policies that can be rapidly agreed and implemented and to build the knowledge and trust that could arise from the experience. Fundamental to all of effectiveness, efficiency and equity and particularly to equity is strong ambition from the rich countries in terms of caps implemented and thus level of carbon price and potential financing flows to developing countries. From all three perspectives, implementing caps embodying ambitious reductions should be of high priority in rich countries. And it is crucial that trading schemes such as the EU ETS be long-term, to provide effective private sector signals, and open, so that as many countries as possible can be included, both from the perspective of efficiency and the building of international collaboration.\n\nEquity also clearly points to support for adaptation to the adverse impacts of climate change. It remains very clear that adaptation to climate change is now both inevitable and very important. For developing countries, good adaptation and good development policy are very strongly intertwined, and it is right that climate change should now become central to national planning processes and to development assistance. International support for adaptation will come in large part through the delivery of the commitments made by rich countries to double aid by 2010 and the commitments made by many countries to meet the target of 0.7% of GNI by 2015. This will deliver an increase of hundreds of billions of dollars.\n\nBut there are limits to adaptation. Small island developing states threatened by sea level rise have fewer options to adapt. Sea defences are particularly costly for low-lying islands, and may do little to protect the tourism and fisheries that sustain the local economy. Development and diversification are still important strategies wherever possible, but ultimately the international community will have to find ways to support alternative responses, including the managed resettlement of some people in these states. This will bring many challenges, particularly for those people that must move. There will be much greater pressures if unabated climate change leads to sea level rise that threatens much larger populations in low-lying coastal areas.\n\nFinally, some people have asked if it is really possible to create structures that will sustain co- operation and overcome the incentives for free-riding. Here, it is important to understand that public pressure for an effective response is growing in many countries, as people begin to realise the scale of the risks they and their successors face if no action is taken and as they see the wide range of initiatives by local governments, businesses and community groups that demonstrate that it is possible to do something about the problem. It is now more important than ever to build trust, through transparency and mutual understanding about the actions that different countries are taking, and to look for international mechanisms that build on and support national objectives, including by reducing costs and increasing the prospects for success.\n!!Conclusions\nClimate change presents a very serious challenge. The most severe damage will be felt in the future, often the far future, but decisions that we take now could lock in those damages.\n\nThe broad conclusion of our analysis is that urgent action should be taken to reduce the risk of committing the world to the real possibility of very high temperature increases. The next few years will be critical. Action is required now, if we are to stabilise somewhere in the range from 450-550ppm CO~~2~~e. Success will depend on continuity in the process of building carbon markets, and imagination and ambition in scaling up co-operation in areas such as technology and reducing deforestation.\n\nThe Review is intended as a contribution to the discussion. We welcome the debate that has been stimulated, and hope that further work will take place on all the issues raised by the Review, including those explored further in this postscript and its technical appendix on aggregate modelling.
\n----\nDownload pdf version of Postscript Technical Annex\nhttp://www.climate-change-two.net/stern-review/postcript-annex.pdf 13pp. (310 Kb)
This Review was announced by the Chancellor of the Exchequer in July 2005. The Review set out to provide a report to the Prime Minister and Chancellor by Autumn 2006 assessing:\n* the economics of moving to a low-carbon global economy, focusing on the medium to long-term perspective, and drawing implications for the timescales for action, and the choice of policies and institutions;\n* the potential of different approaches for adaptation to changes in the climate; and\n* specific lessons for the UK, in the context of its existing climate change goals. The terms of reference for the Review included a requirement to consult broadly with stakeholders and to examine the evidence on:\n* the implications for energy demand and emissions of the prospects for economic growth over the coming decades, including the composition and energy intensity of growth in developed and developing countries;\n* the economic, social and environmental consequences of climate change in both developed and developing countries, taking into account the risks of increased climate volatility and major irreversible impacts, and the climatic interaction with other air pollutants, as well as possible actions to adapt to the changing climate and the costs associated with them;\n* the costs and benefits of actions to reduce the net global balance of greenhouse gas emissions from energy use and other sources, including the role of land-use changes and forestry, taking into account the potential impact of technological advances on future costs; and\n* the impact and effectiveness of national and international policies and arrangements in reducing net emissions in a cost-effective way and promoting a dynamic, equitable and sustainable global economy, including distributional effects and impacts on incentives for investment in cleaner technologies.\n!!Overall approach to the Review\nWe have taken a broad view of the economics required to understand the challenges of climate change. Wherever possible, we have based our Review on gathering and structuring existing research material.\n\nSubmissions to the Review were invited from 10 October 2005 to 15 January 2006. Sir Nicholas Stern set out his initial views on the approach to the Review in the Oxonia lecture on 31 January 2006, and invited further responses to this lecture up to 17 March 2006.\n\nDuring the Review, Sir Nicholas and members of the team visited a number of key countries and institutions, including Brazil, Canada, China, the European Commission, France, Germany, India, Japan, Mexico, Norway, Russia, South Africa and the USA. These visits and work in the UK have included a wide range of interactions, including with economists, scientists, policy-makers, business and NGOs.\n\nThe report also draws on the analysis prepared for the International Energy Agency publications "Energy Technology Perspectives" and "World Energy Outlook 2006".\n\nThere is a solid basis in the literature for the principles underlying our analysis. The scientific literature on the impacts of climate change is evolving rapidly, and the economic modelling has yet to reflect the full range of the new evidence.\n\nIn some areas, we found that existing literature did not provide answers. In these cases, we have conducted some of our own research, within the constraints allowed by our timetable and resources. We also commissioned some papers and analysis to feed into the Review. A full list of commissioned work and links to the papers are at www.sternreview.org.uk
/***\n|Name|PublicationPlugin|\n|Created by|[[Frank Dellaert|http://www.cc.gatech.edu/~dellaert/tiddly.html]]|\n|Location|http://www.cc.gatech.edu/~dellaert/tiddly.html#PublicationPlugin|\n|Version|1.0|\n!Description\nA simple plugin to format publication references. This macro takes the following (mandatory) arguments in order:\n*title: title of the publication\n*url: url to publication\n*authors: a comma separated list of author names or aliases defined using [[AliasPlugin|http://www.tiddlyforge.net/pytw/#AliasPlugin]]\n*citation: booktitle or journal or institution, will become a Tiddler link\n*year: publication year\nThe publication is then rendered using a link to the paper, with author aliases substituted (if defined), and the citation rendered as a Tiddler link.\n!Example\n{{{<<alias A1 First Author>>}}}<<alias A1 First Author>>\n{{{<<alias A2 "[[Linked Author|a2.html]]">>}}}<<alias A2 "[[Linked Author|a2.html]]">>\n{{{<<A1>>, <<A2>>}}}\n <<A1>>, <<A2>>\n\n{{{<<pub "My Paper's Title" URL "A1,A2" "Some Journal" 2005>>}}}\n <<pub "My Paper's Title" URL "A1,A2" "Some Journal" 2005>>\n\n{{{<<pub "My Other Paper" URL2 "A2" "Some Conference" 2003>>}}}\n <<pub "My Other Paper" URL2 "A2" "Some Conference" 2003>>\n\n!Code\n***/\n//{{{\nconfig.macros.pub = {};\n\nfunction adorn(author) {\n var alias = config.macros[author];\n if (alias) {return alias.name?alias.name:alias.text} else {return author}\n}\n\nconfig.macros.pub.handler= function(place,macroName,params) {\n var title = params[0];\n var url = params[1];\n var authors = params[2].split(",");\n var citation = params[3];\n var year = params[4];\n\n // expand author aliases\n var aliases = adorn(authors[0]);\n for (var i=1; i < authors.length; i++) {\n aliases = aliases + ", " + adorn(authors[i])\n }\n wikify("''[[" + title + "|" + url + "]]'', " + aliases + ", [[" + citation + "]], " + year, place);\n}\n\n//}}}\n
/***\n| Name:|QuickOpenTagPlugin|\n| Description:|Changes tag links to make it easier to open tags as tiddlers|\n| Version:|6.1.1|\n| Date:|01-Oct-2006|\n| Source:|http://mptw.tiddlyspot.com/#QuickOpenTagPlugin|\n| Author:|Simon Baird <simon.baird@gmail.com>|\n| CoreVersion:|2.1.x|\n***/\n//{{{\nconfig.quickOpenTag = {\n\n dropdownChar: (document.all ? "\su25bc" : "\su25be"), // the little one doesn't work in IE\n\n createTagButton: function(place,tag,excludeTiddler) {\n // little hack so we can to <<tag PrettyTagName|RealTagName>>\n var splitTag = tag.split("|");\n var pretty = tag;\n if (splitTag.length == 2) {\n tag = splitTag[1];\n pretty = splitTag[0];\n }\n \n var sp = createTiddlyElement(place,"span",null,"quickopentag");\n createTiddlyText(createTiddlyLink(sp,tag,false),pretty);\n \n var theTag = createTiddlyButton(sp,config.quickOpenTag.dropdownChar,\n config.views.wikified.tag.tooltip.format([tag]),onClickTag);\n theTag.setAttribute("tag",tag);\n if (excludeTiddler)\n theTag.setAttribute("tiddler",excludeTiddler);\n return(theTag);\n },\n\n miniTagHandler: function(place,macroName,params,wikifier,paramString,tiddler) {\n var tagged = store.getTaggedTiddlers(tiddler.title);\n if (tagged.length > 0) {\n var theTag = createTiddlyButton(place,config.quickOpenTag.dropdownChar,\n config.views.wikified.tag.tooltip.format([tiddler.title]),onClickTag);\n theTag.setAttribute("tag",tiddler.title);\n theTag.className = "miniTag";\n }\n },\n\n allTagsHandler: function(place,macroName,params) {\n var tags = store.getTags();\n var theDateList = createTiddlyElement(place,"ul");\n if(tags.length == 0)\n createTiddlyElement(theDateList,"li",null,"listTitle",this.noTags);\n for (var t=0; t<tags.length; t++) {\n var theListItem = createTiddlyElement(theDateList,"li");\n var theLink = createTiddlyLink(theListItem,tags[t][0],true);\n var theCount = " (" + tags[t][1] + ")";\n theLink.appendChild(document.createTextNode(theCount));\n var theDropDownBtn = createTiddlyButton(theListItem," " +\n config.quickOpenTag.dropdownChar,this.tooltip.format([tags[t][0]]),onClickTag);\n theDropDownBtn.setAttribute("tag",tags[t][0]);\n }\n },\n\n // todo fix these up a bit\n styles: \n"/*{{{*/\sn"+\n"/* created by QuickOpenTagPlugin */\sn"+\n".tagglyTagged .quickopentag, .tagged .quickopentag \sn"+\n" { margin-right:1.2em; border:1px solid #eee; padding:2px; padding-right:0px; padding-left:1px; }\sn"+\n".quickopentag .tiddlyLink { padding:2px; padding-left:3px; }\sn"+\n".quickopentag a.button { padding:1px; padding-left:2px; padding-right:2px;}\sn"+\n"/* extra specificity to make it work right */\sn"+\n"#displayArea .viewer .quickopentag a.button, \sn"+\n"#displayArea .viewer .quickopentag a.tiddyLink, \sn"+\n"#mainMenu .quickopentag a.tiddyLink, \sn"+\n"#mainMenu .quickopentag a.tiddyLink \sn"+\n" { border:0px solid black; }\sn"+\n"#displayArea .viewer .quickopentag a.button, \sn"+\n"#mainMenu .quickopentag a.button \sn"+\n" { margin-left:0px; padding-left:2px; }\sn"+\n"#displayArea .viewer .quickopentag a.tiddlyLink, \sn"+\n"#mainMenu .quickopentag a.tiddlyLink \sn"+\n" { margin-right:0px; padding-right:0px; padding-left:0px; margin-left:0px; }\sn"+\n"a.miniTag {font-size:150%;} \sn"+\n"#mainMenu .quickopentag a.button \sn"+\n" /* looks better in right justified main menus */\sn"+\n" { margin-left:0px; padding-left:2px; margin-right:0px; padding-right:0px; }\sn" + \n"#topMenu .quickopentag { padding:0px; margin:0px; border:0px; }\sn" +\n"#topMenu .quickopentag .tiddlyLink { padding-right:1px; margin-right:0px; }\sn" +\n"#topMenu .quickopentag .button { padding-left:1px; margin-left:0px; border:0px; }\sn" +\n"/*}}}*/\sn"+\n "",\n\n init: function() {\n // we fully replace these builtins. can't hijack them easily\n window.createTagButton = this.createTagButton;\n config.macros.allTags.handler = this.allTagsHandler;\n config.macros.miniTag = { handler: this.miniTagHandler };\n config.shadowTiddlers["QuickOpenTagStyles"] = this.styles;\n if (store)\n store.addNotification("QuickOpenTagStyles",refreshStyles);\n else\n config.notifyTiddlers.push({name:"QuickOpenTagStyles", notify: refreshStyles});\n }\n\n}\n\nconfig.quickOpenTag.init();\n\n//}}}\n
"If the world is waiting for a calm, reasonable, carefully argued approach to climate change, Nick Stern and his team have produced one. They outline a feasible adjustment policy at tolerable cost beginning now. Sooner is much better."\n"Robert M. Solow"\nNobel Prize economist 1987\n\n"The Stern report shows us, with utmost clarity, while allowing fully for all the uncertainties, what global warming is going to mean; and what can and should be done to reduce it. It provides numbers for the economic impact, and for the necessary economic policies. It deserves the widest circulation. I wish it the greatest possible impact. Governments have a clear and immediate duty to accept the challenge it represents."\n"James Mirrlees"\nNobel Prize economist 1996\n\n"The stark prospects of climate change and its mounting economic and human costs are clearly brought out in this searching investigation. What is particularly striking is the identification of ways and means of sharply minimizing these penalties through acting right now, rather than waiting for our lives to be overrun by rapidly advancing adversities. The world would be foolish to neglect this strong but strictly time-bound practical message."\n"Amartya Sen"\nNobel Prize economist 1998\n\n"The Stern Review of the Economics of Climate Change provides the most thorough and rigorous analysis to date of the costs and risks of climate change, and the costs and risks of reducing emissions. It makes clear that the question is not whether we can afford to act, but whether we can afford not to act. To be sure, there are uncertainties, but what it makes clear is that the downside uncertainties - aggravated by the complex dynamics of long delays, complex interactions, and strong non-linearities - make a compelling case for action. And it provides a comprehensive agenda - one which is economically and politically feasible - behind which the entire world can unite in addressing this most important threat to our future well being."\n"Joseph Stiglitz"\nNobel Prize economist 2001\n\n"The Bank is committed to addressing the dangers of climate change and has made substantial progress in developing an Investment Framework for Clean Energy And Development. I very much welcome the Stern Review which provides a much needed critical economic analysis of the issues associated with climate change, and complements the recent IEA technology assessment and the World Bank's Clean Energy Investment Framework paper. The Bank is today working closely with its clients and partners to turn our analysis into practice, and will seek to substantially increase its own investment flows and those of the private sector.\nA crucial next step is to involve the private sector in the EIF. I am therefore pleased to support a partnership between the World Bank and the World Economic Forum and the World Business Council on Sustainable Development to stimulate private sector investment through the Energy Investment Framework. Chancellor Gordon Brown and I will co-host a conference early next year to launch the\npartnership. "\n"Paul Wolfowitz"\nPresident of the World Bank\n\n"The Stern Review of the Economics of Climate Change is a vital step forward in securing an effective global policy on climate change. Led by one of the world's top economists, the Stern Review shows convincingly that the benefits of early global action to mitigate climate change will be far lower than the costs. The report establishes realistic guidelines for action (based on long-term stabilization ceilings for greenhouse gases), core elements of an effective global policy (carbon pricing, technology policy, and removing barriers to change), and a framework for international cooperation that must include all regions of the world, both developed and developing. The Stern Review will play an important role in helping the world to agree on a sensible post-Kyoto policy."\n"Prof. Jeffrey D. Sachs"\nDirector of the Earth Institute at Columbia University\nSpecial Advisor to UN Secretary General Kofi Annan\n\n"The Economics of Climate Change sends a very important and timely message: that the benefits of strong, early action on climate change outweigh the costs. That conclusion is one that the International Energy Agency fully endorses - notably in its World Energy Outlook 2006 to be published next week. Congratulations to Sir Nick Stern and his team for producing a landmark review which I have no doubt will strengthen the political will to change of governments around the world."\n"Claude Mandil"\nExecutive Director of the International Energy Agency\n\n"Climate change can impose enormous costs on mankind and particularly on the innocent poor people. The uncertainty that is used as an excuse not to act works both ways. If the impact is larger than expected it could be catastrophic. Sir Nick Sterns report is valuable as it shows the need to act now and that the costs of action are modest. One hopes it will spur to action those who are responsible for creating this threat."\n"Kirit Parikh"\nMember, Planning Commission, Government of India\n\n"The scientific evidence of global warming is overwhelming but some commentators and lobby groups have continued to oppose offsetting actions on economic and competitiveness grounds. This comprehensive and authoritative report demolishes their arguments, explaining clearly the complex economics of climate change. It makes plain that we can cut emissions radically at a cost to the economy far less than the economic and human welfare costs which climate change could impose "\n"Adair Turner"\nFormer Director of UK Confederation of British Industry and Economic Advisor to Sustainable Development Commission\n\n"When the history of the world's response to climate change is written, the Stern Review will be recognized as a turning point.\nSir Nicholas and his team have provided important intellectual leadership as humanity engages with its greatest challenge.\nWhile the details will be debated, the main thrust of the report is clear and compelling - the expected benefits of tackling climate change far outweigh the expected costs."\n"Cameron Hepburn"\nOxford University\n\n"I support the Stern Review's conclusion that there is a strong economic case for taking early, effective action to reduce greenhouse gas emissions. This clearly has important implications for transport policy, which my own study is taking into account - sustainable economic growth cannot be achieved in any sector without tackling the effects of our actions on the environment".\n"Sir Rod Eddington"\nAdviser to the UK Government on the long term links between transport and economic growth, and former Chief Executive of British Airways
Robert Pollard, Chair of the [[Information and Communications Sub-Committee]] of the [[NGO Committee on Education]], is the the webster of this site and Professor of Information Ecology at [[Information Habitat: Where Information Lives]], an organization he founded in 1990 shortly after becoming involved in the preparations for the 1992 ''Earth Summit'' / ''UN Conference on Environment and Development'' (UNCED), and that was granted Special Consultative Status with the Economic and Social Council in 1995. Through Information Habitat - and through NGO Committees, Networks and Caucuses he has worked with - he was a pioneer in the adoption, promotion and support of systematic and innovative use of information and communication technologies (ICT) in support of broad-based, informed and collaborative participation of non-governmental organizations in the series of United Nations global conferences during the 1990s - culminating with Habitat II, for which he was the architect and developer of the information and communications strategy for the conference, managing key email lists and databases and building the official Habitat II web site.\n\nSince Habitat II, he has been actively involved in the NGO follow-up to the global conferences, while increasingly focusing on the development of information ecology as a holistic life science for the information age and on the critical contribution of ICT that he is convinced holds a key to a successful transition to a sustainable development path. Building on his earlier experience and inclinations as a librarian, he has devoted considerable attention to gathering and organizing extensive archives of documents relating to sustainable development and to the United Nations, and has generated a unique hyperlinked collection of more than five hundred such documents at [[www.un-documents.net|http://www.un-documents.net]].\n\nBefore becoming involved with the United Nations NGO community, he had been active with environmental, peace and community development organizations in Baltimore for more than twenty years including service as the Co-Chair of a city-wide recycling committee that was instrumental in the establishment of curbside recycling in the city. In 1981, he had been a co-founder of the ''Baltimore Information Cooperative'' that provided support to grassroots and progressive organizations in the use of microcomputers. He served as Librarian at Baltimore City Jail for more than eight years and as Administrative Analyst for an additional five years, for much of that time using his microcomputer as an administrative tool.\n\nPollard was educated at Whitgift School and Cambridge University, where he read Mathematics and Political Economy, having received an Open Exhibition (scholarship) in Mathematics at Corpus Christi College, and moved to the U.S. in 1996 for a Research Assistantship on a Quantitative Analysis of the French Revolution and to The Johns Hopkins University on a Graduate Fellowship in Social Relations, where he focused on methodology, research design, data analysis and mathematical sociology and on small group dynamics. He left academia in 1972 in the context of his involvement with the Vietnam Peace movement and his concern with the ties between academia and the military-industrial complex.\n\nA passionate organic gardener, he had to give up his large - third of an acre - garden in Baltimore's inner city when he moved to New York in 1993; however he has recently discovered a nearby community garden where he has reconnected to the earth and where he manages the compost piles - fed with a steady stream of kitchen 'waste' - and has nurtured a major increase in the garden's worm population and where he also serves is the unofficial landscape gardener
/***\n|Name:|Search Options plugin macro|h\n|Version:|2.2.1 |\n|Released:|2005.10.18 |\n|Modified:|2006.02.03 |\n|Author:|[[Eric Shulman]] - ELS Design Studios |\n|Source: |http://www.TiddlyTools.com/#SearchOptionsPlugin |\n|License: |[[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]] |\n\nThe TiddlyWiki search function normally looks in both tiddler titles and tiddler body content ('text'). However, narrowing the search so that it examines only titles or only text, or expanding the search to include text contained in tiddler tags can be very helpful, especially when searching on common words or phrases. In addition, it is often useful for the search results to show tiddlers with matching titles before tiddlers that contain matching text or tags.\n\n!!!!!Usage\n<<<\nThis plugin adds checkboxes (see below and in AdvancedOptions) to let you selectively configure the TiddlyWiki search function to just examine any combination of tiddler titles, text, or tags. It also provides an option to switch the search results order between 'titles mixed in' (default) and 'titles shown first', as well as an option display the search results as a list of links (in an auto-generated "SearchResults" tiddler), rather than actually displaying all matching tiddlers. You can also enable/disable the "incremental search" (key-by-key searching), so that a search is only initiated when you press the ENTER key or click on the "search:" prompt text.\n<<<\n!!!!!Configuration\n<<<\nIn additional to the checkboxes in AdvancedOptions, a self-contained control panel is included here for your convenience:\n<<option chkSearchTitles>> Search tiddler titles\n<<option chkSearchText>> Search tiddler text\n<<option chkSearchTags>> Search in tiddler tags\n<<option chkSearchTitlesFirst>> Show title matches first\n<<option chkSearchList>> Show list of matching tiddlers\n<<option chkSearchIncremental>> Incremental searching\n<<<\n!!!!!Installation\n<<<\nimport (or copy/paste) the following tiddlers into your document:\n''SearchOptionsPlugin'' (tagged with <<tag systemConfig>>)\n^^documentation and javascript for SearchOptionsPlugin handling^^\n\nWhen installed, this plugin automatically adds checkboxes in the AdvancedOptions shadow tiddler so you can enable/disable the extended search behavior. However, if you have customized your AdvancedOptions, you will need to manually add {{{<<option chkSearchTitles>>}}}, {{{<<option chkSearchText>>}}} and {{{<<option chkSearchTitlesFirst>>}}} (with suitable prompt text) to your customized tiddler.\n<<<\n!!!!!Revision History\n<<<\n''2006.02.03 [2.2.1]''\nrewrite timeout clearing code and blank search text handling to match 2.0.4 core release changes. note that core no longer permits "blank=all" searches, so neither does this plugin. To search for all, use "." with text patterns enabled.\n''2006.02.02 [2.2.0]''\nin search.handler(), KeyHandler() function clears 'left over' timeout when search input is < 3 chars. Prevents searching on shorter text when shortened by rapid backspaces (<500msec)\n''2006.02.01 [2.1.9]''\nin Story.prototype.search(), correct inverted logic for using/not using regular expressions when searching\nalso, blank search text now presents "No search text. Continue anyway?" confirm() message box, so search on blank can still be processed if desired by user.\n''2006.02.01 [2.1.8]''\nin doSearch(), added alert/return if search text is blank\n''2006.01.20 [2.1.7]''\nfixed setting of config.macros.search.reportTitle so that Tweaks can override it.\n''2006.01.19 [2.1.6]''\nimproved SearchResults formatting, added a "search again" form to the report (based on a suggestion from MorrisGray)\ndefine results report title using config.macros.search.reportTitle instead of hard-coding the tiddler title\n''2006.01.18 [2.1.5]''\nCreated separate functions for reportSearchResults(text,matches) and discardSearchResults(), so that other developers can create alternative report generators.\n''2006.01.17 [2.1.4]''\nUse regExp.search() instead of regExp.test() to scan for matches. Correctd the problem where only half the matching tiddlers (the odd-numbered ones) were being reported.\n''2006.01.15 [2.1.3]''\nAdded information (date/time, username, search options used) to SearchResults output\n''2006.01.10 [2.1.2]''\nuse displayTiddlers() to render matched tiddlers. This lets you display multiple matching tiddlers, even if SinglePageModePlugin is enabled.\n''2006.01.08 [2.1.1]''\ncorrected invalid variable reference, "txt.value" to "text" in story.search()\n''2006.01.08 [2.1.0]''\nre-write to match new store.search(), store.search.handler() and story.search() functions.\n''2005.12.30 [2.0.0]''\nUpgraded to TW2.0\nwhen rendering SearchResults tiddler, closeTiddler() first to ensure display is refreshed.\n''2005.12.26 [1.4.0]''\nadded option to search for matching text in tiddler tags\n''2005.12.21 [1.3.7]''\nuse \s\s to 'escape' single quotes in tiddler titles when generating "Open all matching tiddlers" link. Also, added access key: "O", to trigger "open all" link.\nBased on a suggestion by UdoBorkowski.\n''2005.12.18 [1.3.6]''\ncall displayMessage() AFTER showing matching tiddlers so message is not cleared too soon\n''2005.12.17 [1.3.5]''\nif no matches found, just display message and delete any existing SearchResults tiddler.\n''2005.12.17 [1.3.4]''\nuse """{{{""" and """}}}""" to 'escape' display text in SearchResults tiddler to ensure that formatting contained in search string is not rendered \nBased on a suggestion by UdoBorkowski.\n''2005.12.14 [1.3.3]''\ntag SearchResults tiddler with 'excludeSearch' so it won't list itself in subsequent searches\nBased on a suggestion by UdoBorkowski.\n''2005.12.14 [1.3.2]''\nadded "open all matching tiddlers..." link to search results output.\nBased on a suggestion by UdoBorkowski.\n''2005.12.10 [1.3.1]''\nadded "discard search results" link to end of search list tiddler output for quick self-removal of 'SearchResults' tiddler.\n''2005.12.01 [1.3.0]''\nadded chkSearchIncremental to enable/disable 'incremental' searching (i.e., search after each keystroke) (default is ENABLED).\nadded handling for Enter key so it can be used to start a search.\nBased on a suggestion by LyallPearce\n''2005.11.25 [1.2.1]''\nrenamed from SearchTitleOrTextPlugin to SearchOptionsPlugin\n''2005.11.25 [1.2.0]''\nadded chkSearchList option\nBased on a suggestion by RodneyGomes\n''2005.10.19 [1.1.0]''\nadded chkSearchTitlesFirst option.\nBased on a suggestion by ChristianHauck\n''2005.10.18 [1.0.0]''\nInitial Release\n<<<\n!!!!!Credits\n<<<\nThis feature was developed by EricShulman from [[ELS Design Studios|http:/www.elsdesign.com]].\nBased on a suggestion by LyallPearce.\n<<<\n!!!!!Code\n***/\n//{{{\nversion.extensions.SearchTitleOrText = {major: 2, minor: 2, revision: 1, date: new Date(2006,2,3)};\n//}}}\n\n//{{{\nif (config.options.chkSearchTitles==undefined) config.options.chkSearchTitles=true;\nif (config.options.chkSearchText==undefined) config.options.chkSearchText=true;\nif (config.options.chkSearchTags==undefined) config.options.chkSearchTags=true;\nif (config.options.chkSearchTitlesFirst==undefined) config.options.chkSearchTitlesFirst=false;\nif (config.options.chkSearchList==undefined) config.options.chkSearchList=false;\nif (config.options.chkSearchIncremental==undefined) config.options.chkSearchIncremental=true;\n\nconfig.shadowTiddlers.AdvancedOptions += "\sn<<option chkSearchTitles>> Search in tiddler titles";\nconfig.shadowTiddlers.AdvancedOptions += "\sn<<option chkSearchText>> Search in tiddler text";\nconfig.shadowTiddlers.AdvancedOptions += "\sn<<option chkSearchTags>> Search in tiddler tags";\nconfig.shadowTiddlers.AdvancedOptions += "\sn<<option chkSearchTitlesFirst>> Search results show title matches first";\nconfig.shadowTiddlers.AdvancedOptions += "\sn<<option chkSearchList>> Search results show list of matching tiddlers";\nconfig.shadowTiddlers.AdvancedOptions += "\sn<<option chkSearchIncremental>> Incremental searching";\n//}}}\n\n//{{{\nif (config.macros.search.reportTitle==undefined)\n config.macros.search.reportTitle="SearchResults";\n//}}}\n\n//{{{\nconfig.macros.search.handler = function(place,macroName,params)\n{\n var lastSearchText = "";\n var searchTimeout = null;\n var doSearch = function(txt)\n {\n if (txt.value.length>0)\n {\n story.search(txt.value,config.options.chkCaseSensitiveSearch,config.options.chkRegExpSearch);\n lastSearchText = txt.value;\n }\n };\n var clickHandler = function(e)\n {\n doSearch(this.nextSibling);\n return false;\n };\n var keyHandler = function(e)\n {\n if (!e) var e = window.event;\n switch(e.keyCode)\n {\n case 13: // ELS: handle enter key\n doSearch(this);\n break;\n case 27:\n this.value = "";\n clearMessage();\n break;\n }\n if (config.options.chkSearchIncremental)\n {\n if(this.value.length > 2)\n {\n if(this.value != lastSearchText)\n {\n if(searchTimeout) clearTimeout(searchTimeout);\n var txt = this;\n searchTimeout = setTimeout(function() {doSearch(txt);},500);\n }\n }\n else\n if(searchTimeout) clearTimeout(searchTimeout);\n }\n };\n var focusHandler = function(e)\n {\n this.select();\n };\n var btn = createTiddlyButton(place,this.label,this.prompt,clickHandler);\n var txt = createTiddlyElement(place,"input",null,null,null);\n if(params[0])\n txt.value = params[0];\n txt.onkeyup = keyHandler;\n txt.onfocus = focusHandler;\n txt.setAttribute("size",this.sizeTextbox);\n txt.setAttribute("accessKey",this.accessKey);\n txt.setAttribute("autocomplete","off");\n if(config.browser.isSafari)\n {\n txt.setAttribute("type","search");\n txt.setAttribute("results","5");\n }\n else\n txt.setAttribute("type","text");\n}\n//}}}\n\n//{{{\nStory.prototype.search = function(text,useCaseSensitive,useRegExp)\n{\n highlightHack = new RegExp(useRegExp ? text : text.escapeRegExp(),useCaseSensitive ? "mg" : "img");\n var matches = store.search(highlightHack,"title","excludeSearch");\n var q = useRegExp ? "/" : "'";\n clearMessage();\n if (!matches.length) {\n if (config.options.chkSearchList) discardSearchResults();\n displayMessage(config.macros.search.failureMsg.format([q+text+q]));\n } else {\n if (config.options.chkSearchList) \n reportSearchResults(text,matches);\n else {\n var titles = []; for(var t=0; t<matches.length; t++) titles.push(matches[t].title);\n this.closeAllTiddlers(); story.displayTiddlers(null,titles);\n displayMessage(config.macros.search.successMsg.format([matches.length, q+text+q]));\n }\n }\n highlightHack = null;\n}\n//}}}\n\n//{{{\nTiddlyWiki.prototype.search = function(searchRegExp,sortField,excludeTag)\n{\n var candidates = this.reverseLookup("tags",excludeTag,false,sortField);\n\n // scan for matching titles\n var title_results = [];\n if (config.options.chkSearchTitles)\n for(var t=0; t<candidates.length; t++)\n if(candidates[t].title.search(searchRegExp)!=-1)\n title_results.push(candidates[t]);\n\n // scan for matching text\n var text_results = [];\n if (config.options.chkSearchText)\n for(var t=0; t<candidates.length; t++)\n if(candidates[t].text.search(searchRegExp)!=-1)\n text_results.push(candidates[t]);\n\n // scan for matching tags\n var tag_results = [];\n if (config.options.chkSearchTags)\n for(var t=0; t<candidates.length; t++)\n if(candidates[t].tags.join(" ").search(searchRegExp)!=-1)\n tag_results.push(candidates[t]);\n\n // merge the results, eliminating redundant matches\n var results = [];\n for(var t=0; t<title_results.length; t++) results.pushUnique(title_results[t]);\n for(var t=0; t<text_results.length; t++) results.pushUnique(text_results[t]);\n for(var t=0; t<tag_results.length; t++) results.pushUnique(tag_results[t]);\n\n // if not 'titles first', re-sort results to so titles, text and tag matches are mixed together\n if(!sortField) sortField = "title";\n var bySortField=function (a,b) {if(a[sortField] == b[sortField]) return(0); else return (a[sortField] < b[sortField]) ? -1 : +1; }\n if (!config.options.chkSearchTitlesFirst) results.sort(bySortField);\n return results;\n}\n//}}}\n\n// // ''REPORT GENERATOR''\n//{{{\nif (!window.reportSearchResults) window.reportSearchResults=function(text,matches)\n{\n var title=config.macros.search.reportTitle\n var q = config.options.chkRegExpSearch ? "/" : "'";\n var body="";\n\n // summary: nn tiddlers found matching '...', options used\n body+="''"+config.macros.search.successMsg.format([matches.length,q+"{{{"+text+"}}}"+q])+"''\sn";\n body+="^^//searched in:// ";\n body+=(config.options.chkSearchTitles?"''titles'' ":"");\n body+=(config.options.chkSearchText?"''text'' ":"");\n body+=(config.options.chkSearchTags?"''tags'' ":"");\n if (config.options.chkCaseSensitiveSearch||config.options.chkRegExpSearch) {\n body+=" //with options:// ";\n body+=(config.options.chkCaseSensitiveSearch?"''case sensitive'' ":"");\n body+=(config.options.chkRegExpSearch?"''text patterns'' ":"");\n }\n body+="^^";\n\n // numbered list of links to matching tiddlers\n body+="\sn<<<";\n for(var t=0;t<matches.length;t++) body+="\sn# [["+matches[t].title+"]]";\n body+="\sn<<<\sn";\n\n // open all matches button\n body+="<html><input type=\s"button\s" href=\s"javascript:;\s" ";\n body+="onclick=\s"story.displayTiddlers(null,["\n for(var t=0;t<matches.length;t++)\n body+="'"+matches[t].title.replace(/\s'/mg,"\s\s'")+"'"+((t<matches.length-1)?", ":"");\n body+="],1);\s" ";\n body+="accesskey=\s"O\s" ";\n body+="value=\s"open all matching tiddlers\s"></html> ";\n\n // discard search results button\n body+="<html><input type=\s"button\s" href=\s"javascript:;\s" ";\n body+="onclick=\s"story.closeTiddler('"+title+"'); store.deleteTiddler('"+title+"');\s" ";\n body+="value=\s"discard "+title+"\s"></html>";\n\n // search again\n body+="\sn\sn----\sn";\n body+="<<search \s""+text+"\s">> ";\n body+="<<option chkSearchTitles>>titles ";\n body+="<<option chkSearchText>>text ";\n body+="<<option chkSearchTags>>tags";\n body+="<<option chkCaseSensitiveSearch>>case-sensitive ";\n body+="<<option chkRegExpSearch>>text patterns";\n\n // create/update the tiddler\n var tiddler=store.getTiddler(title); if (!tiddler) tiddler=new Tiddler();\n tiddler.set(title,body,config.options.txtUserName,(new Date()),"excludeLists excludeSearch");\n store.addTiddler(tiddler); story.closeTiddler(title);\n\n // use alternate "search again" label in <<search>> macro\n var oldprompt=config.macros.search.label;\n config.macros.search.label="search again";\n\n // render tiddler\n story.displayTiddler(null,title,1); // force refresh\n\n // restore standard search label\n config.macros.search.label=oldprompt;\n\n}\n\nif (!window.discardSearchResults) window.discardSearchResults=function()\n{\n // remove the tiddler\n story.closeTiddler(config.macros.search.reportTitle);\n store.deleteTiddler(config.macros.search.reportTitle);\n}\n//}}}\n\n\n
One of the neatest features of TiddlyWiki is that it is entirely self-contained in a single HTML file. It contains the actual hypertext document, and the JavaScript, CascadingStyleSheets and HTML necessary to both view and edit the document. This means that it is trivial to host a TiddlyWiki on a website, or to distribute one by email. And anyone with a reasonably recent web browser will be able to read and edit it.
This set of shadowed tiddlers contain, and display key items for visitors, browsers and search engines. For convenience of reference, the concurrent contents of some of these tiddlers is also displayed using the built in {{{<<tiddler>>}}} macro.\n* SiteTitle - the short title for the site; displayed by the browser and at the head of the page and included in the page's "title tag"\n>> ''<<tiddler SiteTitle>>''\n* SiteSubtitle - a subtitle for the site, also displayed by the browser and at the head of the page and included in the page's "title tag"\n>> ''<<tiddler SiteSubtitle>>''\n* SiteUrl - the Url where the page is hosted; be sure to define this correctly if you will be generating an XML page\n>> <<tiddler SiteUrl>>\n* DefaultTiddlers - list of tiddlers displayed when the page is opened\n>> <<tiddler DefaultTiddlers>>\n* MainMenu - the Main Menu, displayed here in the left sidebar, and a key to effective navigation - makes extensive use of sub-menus using the NestedSlidersPlugin\n** [[Administrative Menu]] - a component of the Main Menu, it includes common site tools & a nested set of [[Tiddler Administration]] menus for modifying and reconfiguring the appearance and organization of the page \n* MarkupPreHead - "meta tags" for browsers & search engines & to define the opening ''Splash Screen''\n\n* [[More Menus|Menus]]
<<list shadowed>>
<<search>><<closeAll>><<permaview>><<newTiddler>><<newJournal 'DD MMM YYYY'>><<saveChanges>><<slider chkSliderOptionsPanel OptionsPanel 'options »' 'Change TiddlyWiki advanced options'>>
\na partial ~TiddlyPerfect rendition of The Stern Review and the founding element of Climate Change 2.0
The Economics of Climate Change 2.0
http://www.climate-change-two.net/stern-review/
/***\n\n''Inspired by [[TiddlyPom|http://www.warwick.ac.uk/~tuspam/tiddlypom.html]]''\n\n|Name|SplashScreenPlugin|\n|Created by|SaqImtiaz|\n|Location|http://tw.lewcid.org/#SplashScreenPlugin|\n|Version|0.21 |\n|Requires|~TW2.08+|\n!Description:\nProvides a simple splash screen that is visible while the TW is loading.\n\n!Installation\nCopy the source text of this tiddler to your TW in a new tiddler, tag it with systemConfig and save and reload. The SplashScreen will now be installed and will be visible the next time you reload your TW.\n\n!Customizing\nOnce the SplashScreen has been installed and you have reloaded your TW, the splash screen html will be present in the MarkupPreHead tiddler. You can edit it and customize to your needs.\n\n!History\n* 20-07-06 : version 0.21, modified to hide contentWrapper while SplashScreen is displayed.\n* 26-06-06 : version 0.2, first release\n\n!Code\n***/\n//{{{\nvar old_lewcid_splash_restart=restart;\n\nrestart = function()\n{ if (document.getElementById("SplashScreen"))\n document.getElementById("SplashScreen").style.display = "none";\n if (document.getElementById("contentWrapper"))\n document.getElementById("contentWrapper").style.display = "block";\n \n old_lewcid_splash_restart();\n \n if (splashScreenInstall)\n {if(config.options.chkAutoSave)\n {saveChanges();}\n displayMessage("TW SplashScreen has been installed, please save and refresh your TW.");\n }\n}\n\n\nvar oldText = store.getTiddlerText("MarkupPreHead");\nif (oldText.indexOf("SplashScreen")==-1)\n {var siteTitle = store.getTiddlerText("SiteTitle");\n var splasher='\sn\sn<style type="text/css">#contentWrapper {display:none;}</style><div id="SplashScreen" style="border: 3px solid #ccc; display: block; text-align: center; width: 320px; margin: 100px auto; padding: 50px; color:#000; font-size: 28px; font-family:Tahoma; background-color:#eee;"><b>'+siteTitle +'</b> is loading<blink> ...</blink><br><br><span style="font-size: 14px; color:red;">Requires Javascript.</span></div>';\n if (! store.tiddlerExists("MarkupPreHead"))\n {var myTiddler = store.createTiddler("MarkupPreHead");}\n else\n {var myTiddler = store.getTiddler("MarkupPreHead");}\n myTiddler.set(myTiddler.title,oldText+splasher,config.options.txtUserName,null,null);\n store.setDirty(true);\n var splashScreenInstall = true;\n}\n//}}}
/*{{{*/\nbody {\n background: [[ColorPalette::Background]];\n color: [[ColorPalette::Foreground]];\n}\n\na{\n color: [[ColorPalette::PrimaryMid]];\n}\n\na:hover{\n background: [[ColorPalette::PrimaryMid]];\n color: [[ColorPalette::Background]];\n}\n\na img{\n border: 0;\n}\n\nh1,h2,h3,h4,h5 {\n color: [[ColorPalette::PrimaryDark]];\n}\n\n.button {\n color: [[ColorPalette::PrimaryDark]];\n border: 1px solid [[ColorPalette::Background]];\n}\n\n.button:hover {\n color: [[ColorPalette::PrimaryDark]];\n background: [[ColorPalette::SecondaryLight]];\n border-color: [[ColorPalette::SecondaryMid]];\n}\n\n.button:active {\n color: [[ColorPalette::Background]];\n background: [[ColorPalette::SecondaryMid]];\n border: 1px solid [[ColorPalette::SecondaryDark]];\n}\n\n.header {\n background: [[ColorPalette::PrimaryMid]];\n}\n\n.headerShadow {\n color: [[ColorPalette::Foreground]];\n}\n\n.headerShadow a {\n font-weight: normal;\n color: [[ColorPalette::Foreground]];\n}\n\n.headerForeground {\n color: [[ColorPalette::Background]];\n}\n\n.headerForeground a {\n font-weight: normal;\n color: [[ColorPalette::PrimaryPale]];\n}\n\n.tabSelected{\n color: [[ColorPalette::PrimaryDark]];\n background: [[ColorPalette::TertiaryPale]];\n border-left: 1px solid [[ColorPalette::TertiaryLight]];\n border-top: 1px solid [[ColorPalette::TertiaryLight]];\n border-right: 1px solid [[ColorPalette::TertiaryLight]];\n}\n\n.tabUnselected {\n color: [[ColorPalette::Background]];\n background: [[ColorPalette::TertiaryMid]];\n}\n\n.tabContents {\n color: [[ColorPalette::PrimaryDark]];\n background: [[ColorPalette::TertiaryPale]];\n border: 1px solid [[ColorPalette::TertiaryLight]];\n}\n\n.tabContents .button {\n border: 0;}\n\n#sidebar {\n}\n\n#sidebarOptions input {\n border: 1px solid [[ColorPalette::PrimaryMid]];\n}\n\n#sidebarOptions .sliderPanel {\n background: [[ColorPalette::PrimaryPale]];\n}\n\n#sidebarOptions .sliderPanel a {\n border: none;\n color: [[ColorPalette::PrimaryMid]];\n}\n\n#sidebarOptions .sliderPanel a:hover {\n color: [[ColorPalette::Background]];\n background: [[ColorPalette::PrimaryMid]];\n}\n\n#sidebarOptions .sliderPanel a:active {\n color: [[ColorPalette::PrimaryMid]];\n background: [[ColorPalette::Background]];\n}\n\n.wizard {\n background: [[ColorPalette::SecondaryLight]];\n border-top: 1px solid [[ColorPalette::SecondaryMid]];\n border-left: 1px solid [[ColorPalette::SecondaryMid]];\n}\n\n.wizard h1 {\n color: [[ColorPalette::SecondaryDark]];\n}\n\n.wizard h2 {\n color: [[ColorPalette::Foreground]];\n}\n\n.wizardStep {\n background: [[ColorPalette::Background]];\n border-top: 1px solid [[ColorPalette::SecondaryMid]];\n border-bottom: 1px solid [[ColorPalette::SecondaryMid]];\n border-left: 1px solid [[ColorPalette::SecondaryMid]];\n}\n\n.wizard .button {\n color: [[ColorPalette::Background]];\n background: [[ColorPalette::PrimaryMid]];\n border-top: 1px solid [[ColorPalette::PrimaryLight]];\n border-right: 1px solid [[ColorPalette::PrimaryDark]];\n border-bottom: 1px solid [[ColorPalette::PrimaryDark]];\n border-left: 1px solid [[ColorPalette::PrimaryLight]];\n}\n\n.wizard .button:hover {\n color: [[ColorPalette::PrimaryLight]];\n background: [[ColorPalette::PrimaryDark]];\n border-color: [[ColorPalette::PrimaryLight]];\n}\n\n.wizard .button:active {\n color: [[ColorPalette::Background]];\n background: [[ColorPalette::PrimaryMid]];\n border-top: 1px solid [[ColorPalette::PrimaryLight]];\n border-right: 1px solid [[ColorPalette::PrimaryDark]];\n border-bottom: 1px solid [[ColorPalette::PrimaryDark]];\n border-left: 1px solid [[ColorPalette::PrimaryLight]];\n}\n\n#messageArea {\n border: 1px solid [[ColorPalette::SecondaryDark]];\n background: [[ColorPalette::SecondaryMid]];\n color: [[ColorPalette::PrimaryDark]];\n}\n\n#messageArea .button {\n padding: 0.2em 0.2em 0.2em 0.2em;\n color: [[ColorPalette::PrimaryDark]];\n background: [[ColorPalette::Background]];\n}\n\n.popup {\n background: [[ColorPalette::PrimaryLight]];\n border: 1px solid [[ColorPalette::PrimaryMid]];\n}\n\n.popup hr {\n color: [[ColorPalette::PrimaryDark]];\n background: [[ColorPalette::PrimaryDark]];\n border-bottom: 1px;\n}\n\n.listBreak div{\n border-bottom: 1px solid [[ColorPalette::PrimaryDark]];\n}\n\n.popup li.disabled {\n color: [[ColorPalette::PrimaryMid]];\n}\n\n.popup li a, .popup li a:visited {\n color: [[ColorPalette::TertiaryPale]];\n border: none;\n}\n\n.popup li a:hover {\n background: [[ColorPalette::PrimaryDark]];\n color: [[ColorPalette::Background]];\n border: none;\n}\n\n.tiddler .defaultCommand {\n font-weight: bold;\n}\n\n.shadow .title {\n color: [[ColorPalette::TertiaryDark]];\n}\n\n.title {\n color: [[ColorPalette::PrimaryDark]];\n}\n\n.subtitle {\n color: [[ColorPalette::TertiaryDark]];\n}\n\n.toolbar {\n color: [[ColorPalette::PrimaryMid]];\n}\n\n.tagging, .tagged {\n border: 1px solid [[ColorPalette::TertiaryPale]];\n background-color: [[ColorPalette::TertiaryPale]];\n}\n\n.selected .tagging, .selected .tagged {\n background-color: [[ColorPalette::TertiaryLight]];\n border: 1px solid [[ColorPalette::TertiaryMid]];\n}\n\n.tagging .listTitle, .tagged .listTitle {\n color: [[ColorPalette::PrimaryDark]];\n}\n\n.tagging .button, .tagged .button {\n border: none;\n}\n\n.footer {\n color: [[ColorPalette::TertiaryLight]];\n}\n\n.selected .footer {\n color: [[ColorPalette::TertiaryMid]];\n}\n\n.sparkline {\n background: [[ColorPalette::PrimaryPale]];\n border: 0;\n}\n\n.sparktick {\n background: [[ColorPalette::PrimaryDark]];\n}\n\n.error, .errorButton {\n color: [[ColorPalette::Foreground]];\n background: [[ColorPalette::Error]];\n}\n\n.warning {\n color: [[ColorPalette::Foreground]];\n background: [[ColorPalette::SecondaryPale]];\n}\n\n.cascade {\n background: [[ColorPalette::TertiaryPale]];\n color: [[ColorPalette::TertiaryMid]];\n border: 1px solid [[ColorPalette::TertiaryMid]];\n}\n\n.imageLink, #displayArea .imageLink {\n background: transparent;\n}\n\n.viewer .listTitle {list-style-type: none; margin-left: -2em;}\n\n.viewer .button {\n border: 1px solid [[ColorPalette::SecondaryMid]];\n}\n\n.viewer blockquote {\n [[ColorPalette::Foeground]];\n}\n\n.viewer table {\n border: 2px solid [[ColorPalette::TertiaryDark]];\n}\n\n.viewer th, thead td {\n background: [[ColorPalette::PrimaryPale]];\n color: [[ColorPalette::PrimaryDark]];\n}\n\n.viewer td, .viewer tr {\n border: 1px solid [[ColorPalette::TertiaryDark]];\n}\n\n.viewer pre {\n border: 1px solid [[ColorPalette::SecondaryLight]];\n background: [[ColorPalette::SecondaryPale]];\n}\n\n.viewer code {\n color: [[ColorPalette::SecondaryDark]];\n}\n\n.viewer hr {\n border: 0;\n border-top: solid2px [[ColorPalette::TertiaryDark]];\n color: [[ColorPalette::TertiaryDark]];\n}\n\n.box {\n background: #ccecff;\n border; 1px;\n}\n.highlight, .marked {\n background: [[ColorPalette::SecondaryLight]];\n}\n\n.editor input {\n border: 1px solid [[ColorPalette::PrimaryMid]];\n}\n\n.editor textarea {\n border: 1px solid [[ColorPalette::PrimaryMid]];\n width: 100%;\n}\n\n.editorFooter {\n color: [[ColorPalette::TertiaryMid]];\n}\n\n/*}}}*/
/*{{{*/\n* html .tiddler {\n height: 1%;\n}\n\nbody {\n font-size: .75em;\n font-family: bookman old style,garamond antigua,comic sans ms,arial,helvetica;\n margin: 0;\n padding: 0;\n}\n\nh1,h2,h3,h4,h5 {\n font-weight: bold;\n text-decoration: none;\n}\n\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.header {\n position: relative;\n}\n\n.header a:hover {\n background: transparent;\n}\n\n.headerShadow {\n position: relative;\n padding: 1.5em 0em 1em 1em;\n left: -1px;\n top: -1px;\n}\n\n.headerForeground {\n position: absolute;\n padding: 1.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: 19em;\n text-align: right;\n line-height: 1.6em;\n padding-left: 0.2em;\n padding-right: 0.5em;\n padding-top: 0.5em;\n font-size: 90%;\n}\n\n#mainMenu .tiddlyLinkExisting, \n#mainMenu .tiddlyLinkNonExisting,\n#sidebarTabs .tiddlyLinkNonExisting{\n font-weight: normal;\n font-style: normal;\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 .tiddlyLinkExisting {\n font-weight: bold;\n font-style: normal;\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-left: 18em;\n margin-right: 3em;\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 padding-left: 2px;\n}\n\n.missing .subtitle {\n display: none;\n}\n\n.subtitle {\n font-size: 1.1em;\n padding-left: 2px;\n}\n\n.tiddler .button {\n padding: 0.2em 0.4em;\n}\n\n.tagging {\nmargin: 0.5em 0.5em 0.5em 0;\nfloat: right;\ndisplay: none;\n}\n\n.isTag .tagging {\ndisplay: block;\n}\n\n.tagged {\nmargin: 0.5em;\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-left: 1em;\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 li {\n margin-top: 0.8em;\n}\n\n.viewer table {\n border-collapse: collapse;\n margin: 0.5em 0.5em;\n}\n\n.viewer th, .viewer td, .viewer tr,.viewer caption{\n vertical-align: top;\n padding: 1px;\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 2px 0px 2px;\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: 90%;\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/*}}}*/\n
''There is still time to avoid the worst impacts of climate change, if we take strong action now.'' +++\n* The scientific evidence is now overwhelming: climate change is a serious global threat, and it demands an urgent global response.\n* This Review has assessed a wide range of evidence on the impacts of climate change and on the economic costs, and has used a number of different techniques to assess costs and risks. From all of these perspectives, the evidence gathered by the Review leads to a simple conclusion: the benefits of strong and early action far outweigh the economic costs of not acting.\n* Climate change will affect the basic elements of life for people around the world - access to water, food production, health, and the environment. Hundreds of millions of people could suffer hunger, water shortages and coastal flooding as the world warms.\n* Using the results from formal economic models, the Review estimates that if we don't act, the overall costs and risks of climate change will be equivalent to losing at least 5% of global GDP each year, now and forever. If a wider range of risks and impacts is taken into account, the estimates of damage could rise to 20% of GDP or more.\n* In contrast, the costs of action - reducing greenhouse gas emissions to avoid the worst impacts of climate change - can be limited to around 1% of global GDP each year.\n* The investment that takes place in the next 10-20 years will have a profound effect on the climate in the second half of this century and in the next. Our actions now and over the coming decades could create risks of major disruption to economic and social activity, on a scale similar to those associated with the great wars and the economic depression of the first half of the 20th century. And it will be difficult or impossible to reverse these changes.\n* So prompt and strong action is clearly warranted. Because climate change is a global problem, the response to it must be international. It must be based on a shared vision of long-term goals and agreement on frameworks that will accelerate action over the next decade, and it must build on mutually reinforcing approaches at national, regional and international level.\n===\n\n\n''Climate change could have very serious impacts on growth and development.'' +++\n* If no action is taken to reduce emissions, the concentration of greenhouse gases in the atmosphere could reach double its pre-industrial level as early as 2035, virtually committing us to a global average temperature rise of over 2�C. In the longer term, there would be more than a 50% chance that the temperature rise would exceed 5�C. This rise would be very dangerous indeed; it is equivalent to the change in average temperatures from the last ice age to today. Such a radical change in the physical geography of the world must lead to major changes in the human geography\n* - where people live and how they live their lives. Even at more moderate levels of warming, all the evidence - from detailed studies of regional and sectoral impacts of changing weather patterns through to economic models of the global effects - shows that climate change will have serious impacts on world output, on human life and on the environment.\n* All countries will be affected. The most vulnerable - the poorest countries and populations - will suffer earliest and most, even though they have contributed least to the causes of climate change. The costs of extreme weather, including floods, droughts and storms, are already rising, including for rich countries.\n* Adaptation to climate change - that is, taking steps to build resilience and minimise costs - is essential. It is no longer possible to prevent the climate change that will take place over the next two to three decades, but it is still possible to protect our societies and economies from its impacts to some extent - for example, by providing better information, improved planning and more climate-resilient crops and infrastructure. Adaptation will cost tens of billions of dollars a year in developing countries alone, and will put still further pressure on already scarce resources. Adaptation efforts, particularly in developing countries, should be accelerated.\n===\n\n\n''The costs of stabilising the climate are significant but manageable; delay would be dangerous and much more costly.'' +++\n* The risks of the worst impacts of climate change can be substantially reduced if greenhouse gas levels in the atmosphere can be stabilised between 450 and 550ppm CO~~2~~ equivalent (CO~~2~~e). The current level is 430ppm CO~~2~~e today, and it is rising at more than 2ppm each year. Stabilisation in this range would require emissions to be at least 25% below current levels by 2050, and perhaps much more.\n* Ultimately, stabilisation - at whatever level - requires that annual emissions be brought down to more than 80% below current levels.\n* This is a major challenge, but sustained long-term action can achieve it at costs that are low in comparison to the risks of inaction. Central estimates of the annual costs of achieving stabilisation between 500 and 550ppm CO~~2~~e are around 1% of global GDP, if we start to take strong action now.\n* Costs could be even lower than that if there are major gains in efficiency, or if the strong co-benefits, for example from reduced air pollution, are measured. Costs will be higher if innovation in low-carbon technologies is slower than expected, or if policy-makers fail to make the most of economic instruments that allow emissions to be reduced whenever, wherever and however it is cheapest to do so.\n* It would already be very difficult and costly to aim to stabilise at 450ppm CO~~2~~e. If we delay, the opportunity to stabilise at 500-550ppm CO~~2~~e may slip away.\n===\n\n\n''Action on climate change is required across all countries, and it need not cap the aspirations for growth of rich or poor countries.'' +++\n* The costs of taking action are not evenly distributed across sectors or around the world. Even if the rich world takes on responsibility for absolute cuts in emissions of 60-80% by 2050, developing countries must take significant action too. But developing countries should not be required to bear the full costs of this action alone, and they will not have to. Carbon markets in rich countries are already beginning to deliver flows of finance to support low-carbon development, including through the Clean Development Mechanism. A transformation of these flows is now required to support action on the scale required.\n* Action on climate change will also create significant business opportunities, as new markets are created in low-carbon energy technologies and other low-carbon goods and services. These markets could grow to be worth hundreds of billions of dollars each year, and employment in these sectors will expand accordingly.\n* The world does not need to choose between averting climate change and promoting growth and development. Changes in energy technologies and in the structure of economies have created opportunities to decouple growth from greenhouse gas emissions. Indeed, ignoring climate change will eventually damage economic growth.\n* Tackling climate change is the pro-growth strategy for the longer term, and it can be done in a way that does not cap the aspirations for growth of rich or poor countries.\n===\n\n\n''A range of options exists to cut emissions; strong, deliberate policy action is required to motivate their take-up.'' +++\n* Emissions can be cut through increased energy efficiency, changes in demand, and through adoption of clean power, heat and transport technologies. The power sector around the world would need to be at least 60% decarbonised by 2050 for atmospheric concentrations to stabilise at or below 550ppm CO~~2~~e, and deep emissions cuts will also be required in the transport sector.\n* Even with very strong expansion of the use of renewable energy and other low-carbon energy sources, fossil fuels could still make up over half of global energy supply in 2050. Coal will continue to be important in the energy mix around the world, including in fast-growing economies. Extensive carbon capture and storage will be necessary to allow the continued use of fossil fuels without damage to the atmosphere.\n* Cuts in non-energy emissions, such as those resulting from deforestation and from agricultural and industrial processes, are also essential.\n* With strong, deliberate policy choices, it is possible to reduce emissions in both developed and developing economies on the scale necessary for stabilisation in the required range while continuing to grow.\n* Climate change is the greatest market failure the world has ever seen, and it interacts with other market imperfections. Three elements of policy are required for an effective global response. The first is the pricing of carbon, implemented through tax, trading or regulation. The second is policy to support innovation and the deployment of low-carbon technologies. And the third is action to remove barriers to energy efficiency, and to inform, educate and persuade individuals about what they can do to respond to climate change.\n===\n\n\n''Climate change demands an international response, based on a shared understanding of long-term goals and agreement on frameworks for action.'' +++\n* Many countries and regions are taking action already: the EU, California and China are among those with the most ambitious policies that will reduce greenhouse gas emissions. The UN Framework Convention on Climate Change and the Kyoto Protocol provide a basis for international co-operation, along with a range of partnerships and other approaches. But more ambitious action is now required around the world.\n* Countries facing diverse circumstances will use different approaches to make their contribution to tackling climate change. But action by individual countries is not enough. Each country, however large, is just a part of the problem. It is essential to create a shared international vision of long-term goals, and to build the international frameworks that will help each country to play its part in meeting these common goals.\n* Key elements of future international frameworks should include:\n** '''Emissions trading''': Expanding and linking the growing number of emissions trading schemes around the world is a powerful way to promote cost-effective reductions in emissions and to bring forward action in developing countries: strong targets in rich countries could drive flows amounting to tens of billions of dollars each year to support the transition to low-carbon development paths.\n** '''Technology cooperation''': Informal co-ordination as well as formal agreements can boost the effectiveness of investments in innovation around the world. Globally, support for energy R&D should at least double, and support for the deployment of new low-carbon technologies should increase up to five-fold. International cooperation on product standards is a powerful way to boost energy efficiency.\n** '''Action to reduce deforestation''': The loss of natural forests around the world contributes more to global emissions each year than the transport sector. Curbing deforestation is a highly cost-effective way to reduce emissions; large-scale international pilot programmes to explore the best ways to do this could get underway very quickly.\n** '''Adaptation''': The poorest countries are most vulnerable to climate change. It is essential that climate change be fully integrated into development policy, and that rich countries honour their pledges to increase support through overseas development assistance. International funding should also support improved regional information on climate change impacts, and research into new crop varieties that will be more resilient to drought and flood.\n===
/***\n|Plugin Name|''~TabEdit plugin macro''|h\n|Created by|SaqImtiaz|\n|Location|http://lewcid.googlepages.com/lewcid.html#TabEditPlugin|\n|Version|0.32|\n|Requires|~TW2.x|\n\n!Description\nMakes editing of tabs easier.\n\n!Usage\n*Double click a tab to edit the source tiddler\n*Double click outside the tabset to edit the containing tiddler. \n\n!Demo\nTestTabs\n\n!History\n*28-04-06, v0.32 - fixed previous bug fix!\n*27-04-06, v0.31 - fixed conflicts with tabs created using PartTiddler.\n*26-04-06, v0.30 - first public release\n\n***/\n\n//{{{\n\n//tab on double click event handler\nStory.prototype.onTabDblClick = function(e){\n if (!e) var e = window.event;\n var theTarget = resolveTarget(e);\n var title= this.getAttribute("source");\n if ((version.extensions.PartTiddlerPlugin)&&(title.indexOf("/")!=-1))\n {if (!oldFetchTiddler.call(this, [title]))\n {return false;}} \n story.displayTiddler(theTarget,title,2,false,null)\n e.cancelBubble = true;\n if (e.stopPropagation) e.stopPropagation();\n return false;\n }\n\nconfig.macros.tabs.switchTab = function(tabset,tab)\n{\n var cookie = tabset.getAttribute("cookie");\n var theTab = null\n var nodes = tabset.childNodes;\n for(var t=0; t<nodes.length; t++)\n if(nodes[t].getAttribute && nodes[t].getAttribute("tab") == tab)\n {\n theTab = nodes[t];\n theTab.className = "tab tabSelected";\n }\n else\n nodes[t].className = "tab tabUnselected"\n if(theTab)\n {\n if(tabset.nextSibling && tabset.nextSibling.className == "tabContents")\n tabset.parentNode.removeChild(tabset.nextSibling);\n var tabContent = createTiddlyElement(null,"div",null,"tabContents",null);\n tabset.parentNode.insertBefore(tabContent,tabset.nextSibling);\n var contentTitle = theTab.getAttribute("content");\n\n //set source attribute equal to title of tiddler displayed in tab\n tabContent.setAttribute("source",contentTitle);\n //add dbl click event\n tabContent.ondblclick = story.onTabDblClick;\n\n wikify(store.getTiddlerText(contentTitle),tabContent,null,store.getTiddler(contentTitle));\n if(cookie)\n {\n config.options[cookie] = tab;\n saveOptionCookie(cookie);\n }\n }\n}\n\n//}}}
/***\n|Name|TabEditPlugin|\n|Created by|SaqImtiaz|\n|Location|http://lewcid.googlepages.com/lewcid.html#TabEditPlugin|\n|Version|0.32|\n|Requires|~TW2.x|\n\n!Description\nMakes editing of tabs easier.\n\n!Usage\n*Double click a tab to edit the source tiddler\n*Double click outside the tabset to edit the containing tiddler. \n\n!Demo\nTestTabs\n\n!History\n*28-04-06, v0.32 - fixed previous bug fix!\n*27-04-06, v0.31 - fixed conflicts with tabs created using PartTiddler.\n*26-04-06, v0.30 - first public release\n\n***/\n\n//{{{\n\n//tab on double click event handler\nStory.prototype.onTabDblClick = function(e){\n if (!e) var e = window.event;\n var theTarget = resolveTarget(e);\n var title= this.getAttribute("source");\n if ((version.extensions.PartTiddlerPlugin)&&(title.indexOf("/")!=-1))\n {if (!oldFetchTiddler.call(this, [title]))\n {return false;}} \n story.displayTiddler(theTarget,title,2,false,null)\n e.cancelBubble = true;\n if (e.stopPropagation) e.stopPropagation();\n return false;\n }\n\nconfig.macros.tabs.switchTab = function(tabset,tab)\n{\n var cookie = tabset.getAttribute("cookie");\n var theTab = null\n var nodes = tabset.childNodes;\n for(var t=0; t<nodes.length; t++)\n if(nodes[t].getAttribute && nodes[t].getAttribute("tab") == tab)\n {\n theTab = nodes[t];\n theTab.className = "tab tabSelected";\n }\n else\n nodes[t].className = "tab tabUnselected"\n if(theTab)\n {\n if(tabset.nextSibling && tabset.nextSibling.className == "tabContents")\n tabset.parentNode.removeChild(tabset.nextSibling);\n var tabContent = createTiddlyElement(null,"div",null,"tabContents",null);\n tabset.parentNode.insertBefore(tabContent,tabset.nextSibling);\n var contentTitle = theTab.getAttribute("content");\n\n //set source attribute equal to title of tiddler displayed in tab\n tabContent.setAttribute("source",contentTitle);\n //add dbl click event\n tabContent.ondblclick = story.onTabDblClick;\n\n wikify(store.getTiddlerText(contentTitle),tabContent,null,store.getTiddler(contentTitle));\n if(cookie)\n {\n config.options[cookie] = tab;\n saveOptionCookie(cookie);\n }\n }\n}\n\n//}}}
!The Economics of Climate Change: The Stern Review\n* [[Executive Summary]]\n* [[Preface]]\n* [[Acknowledgements]]\n* [[Introduction]]\n* [[Summary of Conclusions]]\n!![[Part I: Climate change - our approach|Part I]] +++\n* [[Chapter 1: The science of climate change: scale of the environment challenge|Chapter 1]]\n* [[Chapter 2: Economics, ethics and climate change|Chapter 2]]\n** [[Chapter 2: Annex A: Ethical frameworks and intertemporal equity|Chapter 2: Annex A]]\n===\n\n!![[Part II: Impacts of climate change on growth and development|Part II]] +++\n* [[Chapter 3: How climate change will affect people around the world|Chapter 3]]\n* [[Chapter 4: Implications of climate change for development|Chapter 4]]\n* [[Chapter 5: Costs of climate change in developed countries|Chapter 5]]\n* [[Chapter 6: Economic modelling of climate-change impacts|Chapter 6]]\n===\n\n!![[Part III: The economics of stabilisation|Part III]] +++\n* [[Chapter 7: Projecting the growth of greenhouse-gas emissions|Chapter 7]]\n** [[Chapter 7: Annex A: Climate change and the environmental Kuznets curve|Chapter 7: Annex A]]\n** [[Chapter 7: Annex B: Emissions from the power sector|Chapter 7: Annex B]]\n** [[Chapter 7: Annex C: Emissions from the transport sector|Chapter 7: Annex C]]\n** [[Chapter 7: Annex D: Emissions from the industry sector|Chapter 7: Annex D]]\n* [[Chapter 8: The challenge of stabilisation|Chapter 8]]\n* [[Chapter 9: Identifying the costs of mitigation|Chapter 9]]\n* [[Chapter 10: Macroeconomic models of costs|Chapter 10]]\n* [[Chapter 11: Structural change and competitiveness|Chapter 11]]\n* [[Chapter 12: Opportunities and wider benefits from climate policies|Chapter 12]]\n* [[Chapter 13: Towards a goal for climate-change policy|Chapter 13]]\n===\n\n!![[Part IV: Policy responses for mitigation|Part IV]] +++\n* [[Chapter 14: Harnessing markets for mitigation - the role of taxation and trading|Chapter 14]]\n* [[Chapter 15: Carbon pricing and emissions markets in practice|Chapter 15]]\n* [[Chapter 16: Accelerating technological innovation|Chapter 16]]\n* [[Chapter 17: Beyond carbon markets and technology|Chapter 17]]\n===\n\n!![[Part V: Policy responses for adaptation|Part V]] +++\n* [[Chapter 18: Understanding the economics of adaptation|Chapter 18]]\n* [[Chapter 19: Adaptation in the developed world|Chapter 19]]\n* [[Chapter 20: Adaptation in the developing world|Chapter 20]]\n===\n\n!![[Part VI: International collective action|Part VI]] +++\n* [[Chapter 21: Framework for understanding international collective action for climate change|Chapter 21]]\n* [[Chapter 22: Creating a global price for carbon|Chapter 22]]\n* [[Chapter 23: Supporting the transition to a low-carbon global economy|Chapter 23]]\n* [[Chapter 24: Promoting effective international technology co-operation|Chapter 24]]\n* [[Chapter 25: Reversing emissions from land use change|Chapter 25]]\n* [[Chapter 26: International support for adaptation|Chapter 26]]\n* [[Chapter 27: Conclusions: building and sustaining international co-operation on climate change|Chapter 27]]\n* [[Acryonyms & Abbreviations]]\n===\n\n!!![[Postscript]] +++\n* [[Postscript Technical Annex]]\n===\n
/***\n| Name:|''tagAdder''|\n| Created by:|SaqImtiaz|\n| Location:|http://lewcid.googlepages.com/lewcid.html|\n| Version:|0.61 (07 Apr-2006)|\n| Requires:|~TW2.07|\n!About\n*provides a drop down list for toggling tags \n*you can specify which tags to list, and have multiple drop downs with different tag lists.\n\n!Demonstration\n<<tagAdder>>\n{{{<<tagAdder>>}}}\n\n''I recommend using either tagAdder or monkeyTagger, with dropTags and dropTagging in the toolbar:''\n\n\n!Installation:\n*Copy this tiddler to your TW with the systemConfig tag\n* copy the following to your ViewTemplate:\n#either {{{\n<div class='tagged' macro='tagAdder'></div>\n}}} to add to next to the tags macro in the viewer area, or\n#{{{<div class='toolbar' >\n<span style="padding-right:1.75em;" macro='tagAdder'></span>\n<span macro='toolbar -closeTiddler closeOthers +editTiddler permalink references jump'></span></div>}}} to add to the toolbar.\n(adjust padding to taste)\n\n!Usage:\n*by default {{{<<tagAdder>>}}} will display drop down list of all tags, with tags present on the tiddler grouped together.\n*to sort alphabetically (ignoring the [x]), use {{{<<tagAdder 'nogroup'>>}}}\n*to specify what tags to list, use {{{<<tagAdder 'group/nogroup' 'tiddler'>>}}} where tiddler is a tiddler that is tagged with the tags you want to list. (use one of either group or no group, not both!)\nEg: TagDataBase is my tiddler that is tagged with the tags I want to list, so I will use {{{<<tagAdder 'group' 'TagDataBase'>>}}}\n for a list like this: <<tagAdder 'group' 'TagDataBase'>>\n*you can specify a custom label by giving the macro an additional parameter.\nEg: {{{<<tagAdder 'group' 'TagDataBase' 'custom label'>>}}} gives <<tagAdder 'group' 'TagDataBase' 'custom label'>>\n\n!Tips:\n*On the tiddler you want to use as your TagsDataBase, add {{{<<tagAdder>>}}} for a drop down list of all tags, so you can easily toggle tags on it!\n*You can have as many TagDataBases as you like.\n\n!Notes:\n*use css to style to taste\n*tags to be removed are preceded by [x]\n\n!To Do:\n*Combine with features of normal tags drop down list.(drop tag macro)\n*TagsDB manager\n*''add exclude tag feature''\n\n!History\n*07 Apr-2006, version 0.61\n**fixed IE bug with not returning false \n\n!CODE\n***/\n//{{{\n\nconfig.macros.tagAdder= {};\n//config.macros.tagAdder.dropdownchar = (document.all?"â–¼":"â–¾"); // the fat one is the only one that works in IE\nconfig.macros.tagAdder.dropdownchar = "â–¼"; // uncomment previous line and comment this for smaller version in FF\nconfig.macros.tagAdder.handler = function(place,macroName,params,wikifier,paramString,tiddler)\n{\n var arrow=': '+ config.macros.tagAdder.dropdownchar;\n var tAsort = (params[0] && params[0] !='.') ? params[0]: 'group';\n if (params[1]){var tAsource=params[1]};\n if ((tAsource)&&(!store.getTiddler(tAsource)))\n return false;\n var tAlabel= (params[2] && params[2] !='.')? params[2]: 'toggle tags'+arrow;\n var tAtooltip= (params[2] && params[2] !='.')? params[2]: 'toggle tags on this tiddler';\n\n if(tiddler instanceof Tiddler)\n {\n var title = tiddler.title;\n var lingo = config.views.editor.tagChooser;\n \n var ontagclick = function(e) {\n if (!e) var e = window.event;\n var tag = this.getAttribute("tag");\n\n var t=store.getTiddler(title);\n if (!t || !t.tags) return;\n if (t.tags.find(tag)==null)\n {t.tags.push(tag)}\n else\n {t.tags.splice(t.tags.find(tag),1)};\n story.saveTiddler(title);\n story.refreshTiddler(title,null,true);\n return false;\n };\n\n var onclick = function(e) {\n if (!e) var e = window.event;\n var popup = Popup.create(this);\n var t=store.getTiddler(title);\n if (!t) return false;\n var tagsarray = store.getTags();\n var tagsvalue=new Array();\n\n for (var i=0; i<tagsarray.length; i++){\n var thetagonly= (tagsarray[i][0]);\n tagsvalue.push(thetagonly);}\n\n if (tAsource)\n {var sourcetiddler=store.getTiddler(tAsource);\n var tagsvalue=sourcetiddler.tags;\n }\n var tagslabel=new Array();\n var tagssorted=new Array();\n\n for (var i=0;i<tagsvalue.length;i++){\n var temptag=(tagsvalue[i]);\n if (t.tags.find(temptag)==null)\n {var temptagx = '[ ] '+temptag;\n tagslabel.push(temptagx);\n tagssorted.push(temptag);\n }\n else\n {var temptagx ='[x] '+temptag;\n if (tAsort=='group'){\n tagslabel.unshift(temptagx);\n tagssorted.unshift(temptag);}\n else if (tAsort=='nogroup'){\n tagslabel.push(temptagx);\n tagssorted.push(temptag);} }\n ;}\n\n\n if(tagsvalue.length == 0)\n createTiddlyText(createTiddlyElement(popup,"li"),lingo.popupNone);\n for (var t=0; t<tagsvalue.length; t++)\n {\n var theTag = createTiddlyButton(createTiddlyElement(popup,"li"),tagslabel[t],"toggle '"+([tagssorted[t]])+"'",ontagclick);\n theTag.setAttribute("tag",tagssorted[t]);\n }\n Popup.show(popup,false);\n e.cancelBubble = true;\n if (e.stopPropagation) e.stopPropagation();\n return(false);\n };\n //createTiddlyButton(place,tAlabel,tAtooltip,onclick);\nvar createdropperButton = function(place){\nvar sp = createTiddlyElement(place,"span",null,"tagadderbutton");\nvar theDropDownBtn = createTiddlyButton(sp,tAlabel,tAtooltip,onclick);\n};\n\ncreatedropperButton(place);\n}\n};\nsetStylesheet(\n ".toolbar .tagadderbutton { margin-right:0em; border:0px solid #eee; padding:0px; padding-right:0px; padding-left:0px; }\sn"+\n ".tagadderbutton a.button { padding:2px; padding-left:2px; padding-right:2px;}\sn"+\n// ".tagadderbutton {font-size:150%;}\sn"+\n "",\n"TagAdderStyles");\n\n//}}}\n\n
/***\n|''Name:''|~TaggerPlugin|\n|''Version:''|1.0.1 (2006-06-01)|\n|''Source:''|http://lewcid.googlepages.com/lewcid.html/#TaggerPlugin|\n|''Author:''|SaqImtiaz|\n|''Description:''|Provides a drop down listing current tiddler tags, and allowing toggling of tags.|\n|''Documentation:''|[[TaggerPluginDocumentation]]|\n|''Source Code:''|[[TaggerPluginSource]]|\n|''~TiddlyWiki:''|Version 2.0.8 or better|\n***/\n// /%\nconfig.tagger={defaults:{label:"Tags: ",tooltip:"Manage tiddler tags",taglist:"true",excludeTags:"",notags:"tiddler has no tags",aretags:"current tiddler tags:",toggletext:"add tags:"}};config.macros.tagger={};config.macros.tagger.arrow=(document.all?"â–¼":"â–¾");config.macros.tagger.handler=function(_1,_2,_3,_4,_5,_6){var _7=config.tagger.defaults;var _8=_5.parseParams("tagman",null,true);var _9=((_8[0].label)&&(_8[0].label[0])!=".")?_8[0].label[0]+this.arrow:_7.label+this.arrow;var _a=((_8[0].tooltip)&&(_8[0].tooltip[0])!=".")?_8[0].tooltip[0]:_7.tooltip;var _b=((_8[0].taglist)&&(_8[0].taglist[0])!=".")?_8[0].taglist[0]:_7.taglist;var _c=((_8[0].exclude)&&(_8[0].exclude[0])!=".")?(_8[0].exclude[0]).readBracketedList():_7.excludeTags.readBracketedList();if((_8[0].source)&&(_8[0].source[0])!="."){var _d=_8[0].source[0];}if(_d&&!store.getTiddler(_d)){return false;}var _e=function(e){if(!e){var e=window.event;}var _11=Popup.create(this);var _12=store.getTags();var _13=new Array();for(var i=0;i<_12.length;i++){_13.push(_12[i][0]);}if(_d){var _15=store.getTiddler(_d);_13=_15.tags.sort();}var _16=_6.tags.sort();var _17=function(_18,_19,_1a){var sp=createTiddlyElement(createTiddlyElement(_11,"li"),"span",null,"tagger");var _1c=createTiddlyButton(sp,_18,_1a+" '"+_19+"'",taggerOnToggle,"button","toggleButton");_1c.setAttribute("tiddler",_6.title);_1c.setAttribute("tag",_19);insertSpacer(sp);if(window.createTagButton_orig_mptw){createTagButton_orig_mptw(sp,_19)}else{createTagButton(sp,_19);}};createTiddlyElement(_11,"li",null,"listTitle",(_6.tags.length==0?_7.notags:_7.aretags));for(var t=0;t<_16.length;t++){_17("[x]",_16[t],"remove tag ");}createTiddlyElement(createTiddlyElement(_11,"li"),"hr");if(_b!="false"){createTiddlyElement(_11,"li",null,"listTitle",_7.toggletext);for(var i=0;i<_13.length;i++){if(!_6.tags.contains(_13[i])&&!_c.contains(_13[i])){_17("[ ]",_13[i],"add tag ");}}createTiddlyElement(createTiddlyElement(_11,"li"),"hr");}var _1f=createTiddlyButton(createTiddlyElement(_11,"li"),("Create new tag"),null,taggerOnToggle);_1f.setAttribute("tiddler",_6.title);if(_d){_1f.setAttribute("source",_d);}Popup.show(_11,false);e.cancelBubble=true;if(e.stopPropagation){e.stopPropagation();}return (false);};createTiddlyButton(_1,_9,_a,_e,"button","taggerDrpBtn");};window.taggerOnToggle=function(e){var tag=this.getAttribute("tag");var _22=this.getAttribute("tiddler");var _23=store.getTiddler(_22);if(!tag){var _24=prompt("Enter new tag:","");if(_24!=""&&_24!=null){var tag=_24;if(this.getAttribute("source")){var _26=store.getTiddler(this.getAttribute("source"));_26.tags.pushUnique(_24);}}else{return false;}}if(!_23||!_23.tags){store.saveTiddler(_22,_22,"",config.options.txtUserName,new Date(),tag);}else{if(_23.tags.find(tag)==null){_23.tags.push(tag);}else{if(!_24){_23.tags.splice(_23.tags.find(tag),1);}}store.saveTiddler(_23.title,_23.title,_23.text,_23.modifier,_23.modified,_23.tags);}story.refreshTiddler(_22,null,true);if(config.options.chkAutoSave){saveChanges();}return false;};setStylesheet(".tagger a.button {font-weight: bold;display:inline; padding:0px;}\sn"+".tagger #toggleButton {padding-left:2px; padding-right:2px; margin-right:1px; font-size:110%;}\sn"+"#nestedtagger {background:#2E5ADF; border: 1px solid #0331BF;}\sn"+".popup .listTitle {color:#000;}\sn"+"","TaggerStyles");window.lewcidTiddlerSwapTag=function(_27,_28,_29){for(var i=0;i<_27.tags.length;i++){if(_27.tags[i]==_28){_27.tags[i]=_29;return true;}}return false;};window.lewcidRenameTag=function(e){var tag=this.getAttribute("tag");var _2d=prompt("Rename tag '"+tag+"' to:",tag);if((_2d==tag)||(_2d==null)){return false;}if(store.tiddlerExists(_2d)){if(confirm(config.messages.overwriteWarning.format([_2d.toString()]))){story.closeTiddler(_2d,false,false);}else{return null;}}tagged=store.getTaggedTiddlers(tag);if(tagged.length!=0){for(var j=0;j<tagged.length;j++){lewcidTiddlerSwapTag(tagged[j],tag,_2d);}}if(store.tiddlerExists(tag)){store.saveTiddler(tag,_2d);}if(document.getElementById("tiddler"+tag)){var _2f=document.getElementById(story.idPrefix+tag);var _30=story.positionTiddler(_2f);var _31=document.getElementById(story.container);story.closeTiddler(tag,false,false);story.createTiddler(_31,_30,_2d,null);story.saveTiddler(_2d);}if(config.options.chkAutoSave){saveChanges();}return false;};window.onClickTag=function(e){if(!e){var e=window.event;}var _34=resolveTarget(e);var _35=(!isNested(_34));if((Popup.stack.length>1)&&(_35==true)){Popup.removeFrom(1);}else{if(Popup.stack.length>0&&_35==false){Popup.removeFrom(0);}}var _36=(_35==false)?"popup":"nestedtagger";var _37=createTiddlyElement(document.body,"ol",_36,"popup",null);Popup.stack.push({root:this,popup:_37});var tag=this.getAttribute("tag");var _39=this.getAttribute("tiddler");if(_37&&tag){var _3a=store.getTaggedTiddlers(tag);var _3b=[];var li,r;for(r=0;r<_3a.length;r++){if(_3a[r].title!=_39){_3b.push(_3a[r].title);}}var _3d=config.views.wikified.tag;if(_3b.length>0){var _3e=createTiddlyButton(createTiddlyElement(_37,"li"),_3d.openAllText.format([tag]),_3d.openAllTooltip,onClickTagOpenAll);_3e.setAttribute("tag",tag);createTiddlyElement(createTiddlyElement(_37,"li"),"hr");for(r=0;r<_3b.length;r++){createTiddlyLink(createTiddlyElement(_37,"li"),_3b[r],true);}}else{createTiddlyText(createTiddlyElement(_37,"li",null,"disabled"),_3d.popupNone.format([tag]));}createTiddlyElement(createTiddlyElement(_37,"li"),"hr");var h=createTiddlyLink(createTiddlyElement(_37,"li"),tag,false);createTiddlyText(h,_3d.openTag.format([tag]));createTiddlyElement(createTiddlyElement(_37,"li"),"hr");var _40=createTiddlyButton(createTiddlyElement(_37,"li"),("Rename tag '"+tag+"'"),null,lewcidRenameTag);_40.setAttribute("tag",tag);}Popup.show(_37,false);e.cancelBubble=true;if(e.stopPropagation){e.stopPropagation();}return (false);};if(!window.isNested){window.isNested=function(e){while(e!=null){var _42=document.getElementById("contentWrapper");if(_42==e){return true;}e=e.parentNode;}return false;};}config.shadowTiddlers.TaggerPluginDocumentation="The documentation is available [[here.|http://lewcid.googlepages.com/lewcid.html#TaggerPluginDocumentation]]";config.shadowTiddlers.TaggerPluginSource="The uncompressed source code is available [[here.|http://lewcid.googlepages.com/lewcid.html#TaggerPluginSource]]";\n// %/
/***\n|''Name:''|~TaggerPlugin|\n|''Version:''|1.0.1 (2006-06-01)|\n|''Source:''|http://lewcid.googlepages.com/lewcid.html/#TaggerPlugin|\n|''Author:''|SaqImtiaz|\n|''Description:''|Provides a drop down listing current tiddler tags, and allowing toggling of tags.|\n|''Documentation:''|[[TaggerPluginDocumentation]]|\n|''Source Code:''|[[TaggerPluginSource]]|\n|''~TiddlyWiki:''|Version 2.0.8 or better|\n***/\n// /%\nconfig.tagger={defaults:{label:"Tags: ",tooltip:"Manage tiddler tags",taglist:"true",excludeTags:"",notags:"tiddler has no tags",aretags:"current tiddler tags:",toggletext:"add tags:"}};config.macros.tagger={};config.macros.tagger.arrow=(document.all?"â–¼":"â–¾");config.macros.tagger.handler=function(_1,_2,_3,_4,_5,_6){var _7=config.tagger.defaults;var _8=_5.parseParams("tagman",null,true);var _9=((_8[0].label)&&(_8[0].label[0])!=".")?_8[0].label[0]+this.arrow:_7.label+this.arrow;var _a=((_8[0].tooltip)&&(_8[0].tooltip[0])!=".")?_8[0].tooltip[0]:_7.tooltip;var _b=((_8[0].taglist)&&(_8[0].taglist[0])!=".")?_8[0].taglist[0]:_7.taglist;var _c=((_8[0].exclude)&&(_8[0].exclude[0])!=".")?(_8[0].exclude[0]).readBracketedList():_7.excludeTags.readBracketedList();if((_8[0].source)&&(_8[0].source[0])!="."){var _d=_8[0].source[0];}if(_d&&!store.getTiddler(_d)){return false;}var _e=function(e){if(!e){var e=window.event;}var _11=Popup.create(this);var _12=store.getTags();var _13=new Array();for(var i=0;i<_12.length;i++){_13.push(_12[i][0]);}if(_d){var _15=store.getTiddler(_d);_13=_15.tags.sort();}var _16=_6.tags.sort();var _17=function(_18,_19,_1a){var sp=createTiddlyElement(createTiddlyElement(_11,"li"),"span",null,"tagger");var _1c=createTiddlyButton(sp,_18,_1a+" '"+_19+"'",taggerOnToggle,"button","toggleButton");_1c.setAttribute("tiddler",_6.title);_1c.setAttribute("tag",_19);insertSpacer(sp);if(window.createTagButton_orig_mptw){createTagButton_orig_mptw(sp,_19)}else{createTagButton(sp,_19);}};createTiddlyElement(_11,"li",null,"listTitle",(_6.tags.length==0?_7.notags:_7.aretags));for(var t=0;t<_16.length;t++){_17("[x]",_16[t],"remove tag ");}createTiddlyElement(createTiddlyElement(_11,"li"),"hr");if(_b!="false"){createTiddlyElement(_11,"li",null,"listTitle",_7.toggletext);for(var i=0;i<_13.length;i++){if(!_6.tags.contains(_13[i])&&!_c.contains(_13[i])){_17("[ ]",_13[i],"add tag ");}}createTiddlyElement(createTiddlyElement(_11,"li"),"hr");}var _1f=createTiddlyButton(createTiddlyElement(_11,"li"),("Create new tag"),null,taggerOnToggle);_1f.setAttribute("tiddler",_6.title);if(_d){_1f.setAttribute("source",_d);}Popup.show(_11,false);e.cancelBubble=true;if(e.stopPropagation){e.stopPropagation();}return (false);};createTiddlyButton(_1,_9,_a,_e,"button","taggerDrpBtn");};window.taggerOnToggle=function(e){var tag=this.getAttribute("tag");var _22=this.getAttribute("tiddler");var _23=store.getTiddler(_22);if(!tag){var _24=prompt("Enter new tag:","");if(_24!=""&&_24!=null){var tag=_24;if(this.getAttribute("source")){var _26=store.getTiddler(this.getAttribute("source"));_26.tags.pushUnique(_24);}}else{return false;}}if(!_23||!_23.tags){store.saveTiddler(_22,_22,"",config.options.txtUserName,new Date(),tag);}else{if(_23.tags.find(tag)==null){_23.tags.push(tag);}else{if(!_24){_23.tags.splice(_23.tags.find(tag),1);}}store.saveTiddler(_23.title,_23.title,_23.text,_23.modifier,_23.modified,_23.tags);}story.refreshTiddler(_22,null,true);if(config.options.chkAutoSave){saveChanges();}return false;};setStylesheet(".tagger a.button {font-weight: bold;display:inline; padding:0px;}\sn"+".tagger #toggleButton {padding-left:2px; padding-right:2px; margin-right:1px; font-size:110%;}\sn"+"#nestedtagger {background:#2E5ADF; border: 1px solid #0331BF;}\sn"+".popup .listTitle {color:#000;}\sn"+"","TaggerStyles");window.lewcidTiddlerSwapTag=function(_27,_28,_29){for(var i=0;i<_27.tags.length;i++){if(_27.tags[i]==_28){_27.tags[i]=_29;return true;}}return false;};window.lewcidRenameTag=function(e){var tag=this.getAttribute("tag");var _2d=prompt("Rename tag '"+tag+"' to:",tag);if((_2d==tag)||(_2d==null)){return false;}if(store.tiddlerExists(_2d)){if(confirm(config.messages.overwriteWarning.format([_2d.toString()]))){story.closeTiddler(_2d,false,false);}else{return null;}}tagged=store.getTaggedTiddlers(tag);if(tagged.length!=0){for(var j=0;j<tagged.length;j++){lewcidTiddlerSwapTag(tagged[j],tag,_2d);}}if(store.tiddlerExists(tag)){store.saveTiddler(tag,_2d);}if(document.getElementById("tiddler"+tag)){var _2f=document.getElementById(story.idPrefix+tag);var _30=story.positionTiddler(_2f);var _31=document.getElementById(story.container);story.closeTiddler(tag,false,false);story.createTiddler(_31,_30,_2d,null);story.saveTiddler(_2d);}if(config.options.chkAutoSave){saveChanges();}return false;};window.onClickTag=function(e){if(!e){var e=window.event;}var _34=resolveTarget(e);var _35=(!isNested(_34));if((Popup.stack.length>1)&&(_35==true)){Popup.removeFrom(1);}else{if(Popup.stack.length>0&&_35==false){Popup.removeFrom(0);}}var _36=(_35==false)?"popup":"nestedtagger";var _37=createTiddlyElement(document.body,"ol",_36,"popup",null);Popup.stack.push({root:this,popup:_37});var tag=this.getAttribute("tag");var _39=this.getAttribute("tiddler");if(_37&&tag){var _3a=store.getTaggedTiddlers(tag);var _3b=[];var li,r;for(r=0;r<_3a.length;r++){if(_3a[r].title!=_39){_3b.push(_3a[r].title);}}var _3d=config.views.wikified.tag;if(_3b.length>0){var _3e=createTiddlyButton(createTiddlyElement(_37,"li"),_3d.openAllText.format([tag]),_3d.openAllTooltip,onClickTagOpenAll);_3e.setAttribute("tag",tag);createTiddlyElement(createTiddlyElement(_37,"li"),"hr");for(r=0;r<_3b.length;r++){createTiddlyLink(createTiddlyElement(_37,"li"),_3b[r],true);}}else{createTiddlyText(createTiddlyElement(_37,"li",null,"disabled"),_3d.popupNone.format([tag]));}createTiddlyElement(createTiddlyElement(_37,"li"),"hr");var h=createTiddlyLink(createTiddlyElement(_37,"li"),tag,false);createTiddlyText(h,_3d.openTag.format([tag]));createTiddlyElement(createTiddlyElement(_37,"li"),"hr");var _40=createTiddlyButton(createTiddlyElement(_37,"li"),("Rename tag '"+tag+"'"),null,lewcidRenameTag);_40.setAttribute("tag",tag);}Popup.show(_37,false);e.cancelBubble=true;if(e.stopPropagation){e.stopPropagation();}return (false);};if(!window.isNested){window.isNested=function(e){while(e!=null){var _42=document.getElementById("contentWrapper");if(_42==e){return true;}e=e.parentNode;}return false;};}config.shadowTiddlers.TaggerPluginDocumentation="The documentation is available [[here.|http://lewcid.googlepages.com/lewcid.html#TaggerPluginDocumentation]]";config.shadowTiddlers.TaggerPluginSource="The uncompressed source code is available [[here.|http://lewcid.googlepages.com/lewcid.html#TaggerPluginSource]]";\n// %/
/***\n| Name:|TagglyTaggingPlugin|\n| Description:|tagglyTagging macro is a replacement for the builtin tagging macro in your ViewTemplate|\n| Version:|6.1.5|\n| Date:|05-Oct-2006|\n| Source:|http://mptw.tiddlyspot.com/#TagglyTaggingPlugin|\n| Author:|Simon Baird <simon.baird@gmail.com>|\n| CoreVersion:|2.1.x|\n!!See also:\n* [[1. What is TagglyTagging?]] \n* [[2. What's different about TagglyTagging?]] \n* [[3. Why use TagglyTagging?]] \n* [[4. How do I install it?]]\n* [[5. Where did it come from?]] \n!!Notes\nSee http://mptw.tiddlyspot.com/#TagglyTagging\n***/\n//{{{\nconfig.taggly = {\n\n // for translations\n lingo: {\n labels: {\n asc: "\su2191", // down arrow\n desc: "\su2193", // up arrow\n title: "title",\n modified: "modified",\n created: "created",\n show: "+",\n hide: "-",\n normal: "normal",\n group: "group",\n commas: "commas",\n sitemap: "sitemap",\n numCols: "cols\su00b1", // plus minus sign\n label: "Tagged as '%0':"\n },\n\n tooltips: {\n title: "Click to sort by title",\n modified: "Click to sort by modified date",\n created: "Click to sort by created date",\n show: "Click to show tagging list",\n hide: "Click to hide tagging list",\n normal: "Click to show a normal ungrouped list",\n group: "Click to show list grouped by tag",\n sitemap: "Click to show a sitemap style list",\n commas: "Click to show a comma separated list",\n numCols: "Click to change number of columns"\n }\n },\n\n config: {\n showTaggingCounts: true,\n listOpts: {\n // the first one will be the default\n sortBy: ["title","modified","created"],\n sortOrder: ["asc","desc"],\n hideState: ["show","hide"],\n listMode: ["normal","group","sitemap","commas"],\n numCols: ["1","2","3","4","5","6"]\n },\n valuePrefix: "taggly."\n },\n\n getTagglyOpt: function(title,opt) {\n var val = store.getValue(title,this.config.valuePrefix+opt);\n return val ? val : this.config.listOpts[opt][0];\n },\n\n setTagglyOpt: function(title,opt,value) {\n if (!store.tiddlerExists(title))\n // create it silently\n store.saveTiddler(title,title,config.views.editor.defaultText.format([title]),config.options.txtUserName,new Date(),null);\n // if value is default then remove it to save space\n return store.setValue(title,\n this.config.valuePrefix+opt,\n value == this.config.listOpts[opt][0] ? null : value);\n },\n\n getNextValue: function(title,opt) {\n var current = this.getTagglyOpt(title,opt);\n var pos = this.config.listOpts[opt].indexOf(current);\n // a little usability enhancement. actually it doesn't work right for grouped or sitemap\n var limit = (opt == "numCols" ? store.getTaggedTiddlers(title).length : this.config.listOpts[opt].length);\n var newPos = (pos + 1) % limit;\n return this.config.listOpts[opt][newPos];\n },\n\n toggleTagglyOpt: function(title,opt) {\n var newVal = this.getNextValue(title,opt);\n this.setTagglyOpt(title,opt,newVal);\n }, \n\n createListControl: function(place,title,type) {\n var lingo = config.taggly.lingo;\n var label;\n var tooltip;\n var onclick;\n\n if ((type == "title" || type == "modified" || type == "created")) {\n // "special" controls. a little tricky. derived from sortOrder and sortBy\n label = lingo.labels[type];\n tooltip = lingo.tooltips[type];\n\n if (this.getTagglyOpt(title,"sortBy") == type) {\n label += lingo.labels[this.getTagglyOpt(title,"sortOrder")];\n onclick = function() {\n config.taggly.toggleTagglyOpt(title,"sortOrder");\n return false;\n }\n }\n else {\n onclick = function() {\n config.taggly.setTagglyOpt(title,"sortBy",type);\n config.taggly.setTagglyOpt(title,"sortOrder",config.taggly.config.listOpts.sortOrder[0]);\n return false;\n }\n }\n }\n else {\n // "regular" controls, nice and simple\n label = lingo.labels[type == "numCols" ? type : this.getNextValue(title,type)];\n tooltip = lingo.tooltips[type == "numCols" ? type : this.getNextValue(title,type)];\n onclick = function() {\n config.taggly.toggleTagglyOpt(title,type);\n return false;\n }\n }\n\n // hide button because commas don't have columns\n if (!(this.getTagglyOpt(title,"listMode") == "commas" && type == "numCols"))\n createTiddlyButton(place,label,tooltip,onclick,type == "hideState" ? "hidebutton" : "button");\n },\n\n makeColumns: function(orig,numCols) {\n var listSize = orig.length;\n var colSize = listSize/numCols;\n var remainder = listSize % numCols;\n\n var upperColsize = colSize;\n var lowerColsize = colSize;\n\n if (colSize != Math.floor(colSize)) {\n // it's not an exact fit so..\n upperColsize = Math.floor(colSize) + 1;\n lowerColsize = Math.floor(colSize);\n }\n\n var output = [];\n var c = 0;\n for (var j=0;j<numCols;j++) {\n var singleCol = [];\n var thisSize = j < remainder ? upperColsize : lowerColsize;\n for (var i=0;i<thisSize;i++) \n singleCol.push(orig[c++]);\n output.push(singleCol);\n }\n\n return output;\n },\n\n drawTable: function(place,columns,theClass) {\n var newTable = createTiddlyElement(place,"table",null,theClass);\n var newTbody = createTiddlyElement(newTable,"tbody");\n var newTr = createTiddlyElement(newTbody,"tr");\n for (var j=0;j<columns.length;j++) {\n var colOutput = "";\n for (var i=0;i<columns[j].length;i++) \n colOutput += columns[j][i];\n var newTd = createTiddlyElement(newTr,"td",null,"tagglyTagging"); // todo should not need this class\n wikify(colOutput,newTd);\n }\n return newTable;\n },\n\n createTagglyList: function(place,title) {\n switch(this.getTagglyOpt(title,"listMode")) {\n case "group": return this.createTagglyListGrouped(place,title); break;\n case "normal": return this.createTagglyListNormal(place,title,false); break;\n case "commas": return this.createTagglyListNormal(place,title,true); break;\n case "sitemap":return this.createTagglyListSiteMap(place,title); break;\n }\n },\n\n getTaggingCount: function(title) {\n // thanks to Doug Edmunds\n if (this.config.showTaggingCounts) {\n var tagCount = store.getTaggedTiddlers(title).length;\n if (tagCount > 0)\n return " ("+tagCount+")";\n }\n return "";\n },\n\n // this is for normal and commas mode\n createTagglyListNormal: function(place,title,useCommas) {\n\n var list = store.getTaggedTiddlers(title,this.getTagglyOpt(title,"sortBy"));\n\n if (this.getTagglyOpt(title,"sortOrder") == "desc")\n list = list.reverse();\n\n var output = [];\n for (var i=0;i<list.length;i++) {\n var countString = this.getTaggingCount(list[i].title);\n if (useCommas)\n output.push((i > 0 ? ", " : "") + "[[" + list[i].title + "]]" + countString);\n else\n output.push("*[[" + list[i].title + "]]" + countString + "\sn");\n }\n\n return this.drawTable(place,\n this.makeColumns(output,useCommas ? 1 : parseInt(this.getTagglyOpt(title,"numCols"))),\n useCommas ? "commas" : "normal");\n },\n\n // this is for the "grouped" mode\n createTagglyListGrouped: function(place,title) {\n var sortBy = this.getTagglyOpt(title,"sortBy");\n var sortOrder = this.getTagglyOpt(title,"sortOrder");\n\n var list = store.getTaggedTiddlers(title,sortBy);\n\n if (sortOrder == "desc")\n list = list.reverse();\n\n var leftOvers = []\n for (var i=0;i<list.length;i++)\n leftOvers.push(list[i].title);\n\n var allTagsHolder = {};\n for (var i=0;i<list.length;i++) {\n for (var j=0;j<list[i].tags.length;j++) {\n\n if (list[i].tags[j] != title) { // not this tiddler\n\n if (!allTagsHolder[list[i].tags[j]])\n allTagsHolder[list[i].tags[j]] = "";\n\n allTagsHolder[list[i].tags[j]] += "**[["+list[i].title+"]]"\n + this.getTaggingCount(list[i].title) + "\sn";\n leftOvers.setItem(list[i].title,-1); // remove from leftovers. at the end it will contain the leftovers\n }\n }\n }\n\n var allTags = [];\n for (var t in allTagsHolder)\n allTags.push(t);\n\n var sortHelper = function(a,b) {\n if (a == b) return 0;\n if (a < b) return -1;\n return 1;\n };\n\n allTags.sort(function(a,b) {\n var tidA = store.getTiddler(a);\n var tidB = store.getTiddler(b);\n if (sortBy == "title") return sortHelper(a,b);\n else if (!tidA && !tidB) return 0;\n else if (!tidA) return -1;\n else if (!tidB) return +1;\n else return sortHelper(tidA[sortBy],tidB[sortBy]);\n });\n\n var leftOverOutput = "";\n for (var i=0;i<leftOvers.length;i++)\n leftOverOutput += "*[["+leftOvers[i]+"]]" + this.getTaggingCount(leftOvers[i]) + "\sn";\n\n var output = [];\n\n if (sortOrder == "desc")\n allTags.reverse();\n else if (leftOverOutput != "")\n // leftovers first...\n output.push(leftOverOutput);\n\n for (var i=0;i<allTags.length;i++)\n output.push("*[["+allTags[i]+"]]" + this.getTaggingCount(leftOvers[i]) + "\sn" + allTagsHolder[allTags[i]]);\n\n if (sortOrder == "desc" && leftOverOutput != "")\n // leftovers last...\n output.push(leftOverOutput);\n\n return this.drawTable(place,\n this.makeColumns(output,parseInt(this.getTagglyOpt(title,"numCols"))),\n "grouped");\n\n },\n\n // used to build site map\n treeTraverse: function(title,depth,sortBy,sortOrder) {\n\n var list = store.getTaggedTiddlers(title,sortBy);\n if (sortOrder == "desc")\n list.reverse();\n\n var indent = "";\n for (var j=0;j<depth;j++)\n indent += "*"\n\n var childOutput = "";\n for (var i=0;i<list.length;i++)\n if (list[i].title != title)\n childOutput += this.treeTraverse(list[i].title,depth+1,sortBy,sortOrder);\n\n if (depth == 0)\n return childOutput;\n else\n return indent + "[["+title+"]]" + this.getTaggingCount(title) + "\sn"+childOutput;\n },\n\n // this if for the site map mode\n createTagglyListSiteMap: function(place,title) {\n var output = this.treeTraverse(title,0,this.getTagglyOpt(title,"sortBy"),this.getTagglyOpt(title,"sortOrder"));\n return this.drawTable(place,\n this.makeColumns(output.split(/(?=^\s*\s[)/m),parseInt(this.getTagglyOpt(title,"numCols"))), // regexp magic\n "sitemap"\n );\n },\n\n macros: {\n tagglyTagging: {\n handler: function (place,macroName,params,wikifier,paramString,tiddler) {\n var refreshContainer = createTiddlyElement(place,"div");\n // do some refresh magic to make it keep the list fresh - thanks Saq\n refreshContainer.setAttribute("refresh","macro");\n refreshContainer.setAttribute("macroName",macroName);\n refreshContainer.setAttribute("title",tiddler.title);\n this.refresh(refreshContainer);\n },\n\n refresh: function(place) {\n var title = place.getAttribute("title");\n removeChildren(place);\n if (store.getTaggedTiddlers(title).length > 0) {\n var lingo = config.taggly.lingo;\n config.taggly.createListControl(place,title,"hideState");\n if (config.taggly.getTagglyOpt(title,"hideState") == "show") {\n createTiddlyElement(place,"span",null,"tagglyLabel",lingo.labels.label.format([title]));\n config.taggly.createListControl(place,title,"title");\n config.taggly.createListControl(place,title,"modified");\n config.taggly.createListControl(place,title,"created");\n config.taggly.createListControl(place,title,"listMode");\n config.taggly.createListControl(place,title,"numCols");\n config.taggly.createTagglyList(place,title);\n }\n }\n }\n }\n },\n\n // todo fix these up a bit\n styles: \n"/*{{{*/\sn"+\n"/* created by TagglyTaggingPlugin */\sn"+\n".tagglyTagging { padding-top:0.5em; }\sn"+\n".tagglyTagging li.listTitle { display:none; }\sn"+\n".tagglyTagging ul {\sn"+\n" margin-top:0px; padding-top:0.5em; padding-left:2em;\sn"+\n" margin-bottom:0px; padding-bottom:0px;\sn"+\n"}\sn"+\n".tagglyTagging { vertical-align: top; margin:0px; padding:0px; }\sn"+\n".tagglyTagging table { margin:0px; padding:0px; }\sn"+\n".tagglyTagging .button { display:none; margin-left:3px; margin-right:3px; }\sn"+\n".tagglyTagging .button, .tagglyTagging .hidebutton {\sn"+\n" color:[[ColorPalette::TertiaryLight]]; font-size:90%;\sn"+\n" border:0px; padding-left:0.3em;padding-right:0.3em;\sn"+\n"}\sn"+\n".tagglyTagging .button:hover, .hidebutton:hover {\sn"+\n" background:[[ColorPalette::TertiaryPale]]; color:[[ColorPalette::TertiaryDark]];\sn"+\n"}\sn"+\n".selected .tagglyTagging .button {\sn"+\n" display:inline;\sn"+\n"}\sn"+\n".tagglyTagging .hidebutton { color:[[ColorPalette::Background]]; }\sn"+\n".selected .tagglyTagging .hidebutton { color:[[ColorPalette::TertiaryLight]] }\sn"+\n".tagglyLabel { color:[[ColorPalette::TertiaryMid]]; font-size:90%; }\sn"+\n".tagglyTagging ul {padding-top:0px; padding-bottom:0.5em; margin-left:1em; }\sn"+\n".tagglyTagging ul ul {list-style-type:disc; margin-left:-1em;}\sn"+\n".tagglyTagging ul ul li {margin-left:0.5em; }\sn"+\n".editLabel { font-size:90%; padding-top:0.5em; }\sn"+\n".tagglyTagging .commas { padding-left:1.8em; }\sn"+\n"/*}}}*/\sn"+\n "",\n\n init: function() {\n merge(config.macros,this.macros);\n config.shadowTiddlers["TagglyTaggingStyles"] = this.styles;\n if (store)\n store.addNotification("TagglyTaggingStyles",refreshStyles);\n else\n config.notifyTiddlers.push({name:"TagglyTaggingStyles", notify: refreshStyles});\n }\n};\n\nconfig.taggly.init();\n\n//}}}\n\n
/*{{{*/\n/* created by TagglyTaggingPlugin */\n.tagglyTagging { padding-top:0.5em; }\n.tagglyTagging li.listTitle { display:none; }\n.tagglyTagging ul {\n margin-top:0px; padding-top:0.5em; padding-left:2em;\n margin-bottom:0px; padding-bottom:0px;\n}\n.tagglyTagging { vertical-align: top; margin:0px; padding:0px; }\n.tagglyTagging table { margin:0px; padding:0px; }\n.tagglyTagging .button { display:none; margin-left:3px; margin-right:3px; }\n.tagglyTagging .button, .tagglyTagging .hidebutton {\n color:[[ColorPalette::TertiaryLight]]; font-size:90%;\n border:0px; padding-left:0.3em;padding-right:0.3em;\n}\n.tagglyTagging .button:hover, .hidebutton:hover {\n background:[[ColorPalette::TertiaryPale]]; color:[[ColorPalette::TertiaryDark]];\n}\n.selected .tagglyTagging .button {\n display:inline;\n}\n.tagglyTagging .hidebutton { color:[[ColorPalette::Background]]; }\n.selected .tagglyTagging .hidebutton { color:[[ColorPalette::TertiaryLight]] }\n.tagglyLabel { color:[[ColorPalette::TertiaryMid]]; font-size:90%; }\n.tagglyTagging ul {padding-top:0px; padding-bottom:0.5em; margin-left:1em; }\n.tagglyTagging ul ul {list-style-type:disc; margin-left:-1em;}\n.tagglyTagging ul ul li {margin-left:0.5em; }\n.editLabel { font-size:90%; padding-top:0.5em; }\n.tagglyTagging .commas { padding-left:1.8em; }\n/* displays the list of a tiddler's tags horizontally. used in ViewTemplate */\n.tagglyTagged {\ntext-align: right \n}\n.tagglyTagged li.listTitle {\n display:none\n}\n.tagglyTagged li {\n display: inline; font-size:90%;\n}\n.tagglyTagged ul {\n margin:0px; padding:0px;\n}\n/*}}}*/\n
This web page of [[The Stern Review]] has been developed on principles of [[Information Ecology]] - a holistic life science for a knowledge-based universe that has been developed by [[Information Habitat: Where Information Lives]] in the course of systematic application and promotion of the use of information and communications technology in support of broad-based participation and access to information for Non-Governmental Organizations participating in the series of major United Nations conferences of the 1990s - beginning with peparations for the 1992 ''Earth Summit'' - and the follow-up to these conferences.\n\n
<html>\n<iframe style="background-color:#ffffff; border-color:#ffffff; border:none;" width="100%" height="800" frameborder="0" scrolling="yes" src="http://habitat.igc.org/peace-cubes/template.htm" title="Templates for Light & Colour Cubes">\n</iframe> </html>
''The Stern Review of the Economics of Climate Change'' was commissioned by the UK Governement in July 2005, with the following terms of reference:\n<<<\n"The terms of reference of the review are to:\n\nExamine the evidence on:\n* The implications for energy demand and emissions of the prospects for economic growth over the coming decades, including the composition and energy intensity of growth in developed and developing countries;\n* The economic, social and environmental consequences of climate change in both developed and developing countries, taking into account the risks of increased climate volatility and major irreversible impacts, and the climatic interaction with other air pollutants, as well as possible actions to adapt to the changing climate and the costs associated with them;\n* The costs and benefits of actions to reduce the net global balance of greenhouse gas emissions from energy use and other sources, including the role of land-use changes and forestry, taking into account the potential impact of technological advances on future costs; and\n*The impact and effectiveness of national and international policies and arrangements in reducing net emissions in a cost-effective way and promoting a dynamic, equitable and sustainable global economy, including distributional effects and impacts on incentives for investment in cleaner technologies\nConsult with key stakeholders, internationally and domestically, to understand views and inform analysis.\n\nBased on this evidence, provide:\n* An assessment of the economics of moving to a low-carbon global economy, focusing on the medium to long-term perspective, and drawing implications for the timescales for action, and choice of policies and institutions.\n* An assessment of the potential of different approaches for adaptation to changes in the climate. \nAssess how this analysis applies to the specific case of the UK, in the context of its existing climate change goals.\n\nProduce a report to the Prime Minister and Chancellor by Autumn 2006."\n<<<\nThe Stern Review takes its name from its author, ''Sir Nicholas Stern'', a British economist and academic who had served as Chief Economist and Senior ~Vice-President of the World Bank from 2000 to 2003, and is now a civil servant and government economic advisor in the United Kingdom.\n\nFor additional background information on the Stern Review, visit [[www.sternreview.org.uk|http://www.sternreview.org.uk]] \n\nAdditional background information on The Stern Review can be found on the Wikipedia entry for <<wikipedia "Stern Review">>\n\n[[Order the book]]\n\nDownload a bookmarked copy of the full document - inlcuding the Postcript - in pdf format at http://www.climate-change-two.net/stern-review/stern-review.pdf 659p, 10.5 Mb
These tiddlers are included for their usefulness in administering, managing and editing this TiddlyWiki web page, and may be of interest to visitors who want to explore some of the unique design features of TiddlyWiki web pages, and perhaps to being developing your own TiddyWiki pages. A central key to the genius of the design of TiddlyWiki is the way that virtually all aspects of a TiddlyWiki web page - organization and classification of the content, layout, format, colours, fonts, functions and features can be managed through tiddlers that define templates, styles or macros and features written in Javascript.\n* [[Tiddler Lists]] \n** [[Alphabetical Tiddlers]] \n** [[Tiddler Timeline]]\n** [[Shadow Tiddlers]] \n** [[Missing Tiddlers]] \n** [[Imported Tiddlers]] \n** [[Tiddler Tags]] \n** [[Included TiddlyWikis]] \n* [[Main Menu|MainMenu]] \n** [[Default Tiddlers|DefaultTiddlers]] \n* [[Import Tiddlers]] \n* [[Plugin Macros]] \n* [[Templates & Stylesheets]] \n** PageTemplate \n** ViewTemplate \n** EditTemplate \n** StyleSheetLayout \n** StyleSheetColors \n** [[Colour Palette]] \n* [[Formatting Tiddlers]] \n** [[Formatting Text]] \n** [[Headers & Outlines]] \n** [[Tiddly Links]] \n** [[Tables]] \n** [[Images]] \n
TiddlyWiki offers many ways by which you can create list of tiddlers\n* [[Alphabetical Tiddlers]] - a list of tiddlers in alphabetical order\n* [[Tiddler Timeline]] - a list of tiddlers by date they were created or edited\n* [[Shadow Tiddlers]] - tiddlers for which a default value is generated - either by TiddlyWiki itself, or by a plugin macro\n* [[Missing Tiddlers]] - tiddlers that have not been defined, but that have been referenced in one or more other tiddlers\n* [[Site Maps]] - \n
TiddlyWiki <<version>>\n\n|Time Line|All Tiddlers|Shadowed|Tags|Missing|Orphans|h\n|<<timeline>> |<<list all>> |<<tiddler TabMoreShadowed>> |<<tiddler TabTags>> |<<list missing>> |<<list orphans>> |\n
This tiddler uses the {{<<allTags>>}}} built-in macro to list the tags / key words, indicate the number of tiddlers with each tag, and create a link to each tag that displays all the tiddlers with the tag.\n\n<<allTags>>\n
<<tiddler TabTimeline>>
If you want to learn more about some of the features of ''TiddlyWiki'' by visiting ''~TiddlyHelp'' at http://www.ngo-education.net/tiddly-help
TiddlyPerfect is the child of a marriage of convenience. and holds within it great promises of convenience. a marriage of the old and the new and through which the unparalelled genius of DataPerfect, the true centrepiece of the WordPerfect Corporation in its days the old. One parent - TiddlyWiki - the newest, wiki-est of wikis; the other is DataPerfect, the most brilliant software in WordPerfect Library / Office released more than twenty years ago in a world of MS-DOS - TiddlyWiki, the complex and the simple. and a marriag between TiddlyWiki and DataPerfect - from wiki interactions between conversations among Javascripts, Cascading Styles, HTML, Wiki, //et al//
The following TiddlyWiki / TiddlyPerfect web sites are currently online or under development Please note that all of these sites are under development:\n\n!!! Available online\n* [[Climate Change 2.0]] - [[www.climate-change-two.net/|http://www.climate-change-two.net/]]\n** [[Youth & Technology Challenge]] - [[www.climate-change-two.net/challenge/|http://www.climate-change-two.net/challenge/]]\n** [[Economics of Climate Change: The Stern Review]] - [[www.climate-change-two.net/stern-review/|http://www.climate-change-two.net/stern-review/]]\n** [[Rescuing a Planet Under Stress and a Civilization in Trouble: Plan B 3.0 (beta)]] - http://www.climate-change-two.net/plan-b/\n** Confronting Climate Change - [[www.climate-change-two.net/ccc|http://www.climate-change-two.net/ccc]]\n** IPCC Third Assessment Report\n** IPCC Fourth Assessment Report: Working Group II Summary for Policy Makers - [[www.climate-change-two.net/ar4-wg2-spm/|http://www.climate-change-two.net/ar4-wg2-spm/]]\n** Climate Change Bibliography\n** Climate Change Taxonomy\n* TiddlyPerfect - http://www.tiddlyperfect.net/\n* [[NGO Committee on Education]] - [[www.ngo-education.net/|http://www.ngo-education.net/]]\n** [[Workshop on Education, Youth & Technology for Sustainable Development|DPI/NGO Workshop]] - [[www.ngo-education.net/workshop/|http://www.ngo-education.net/workshop/]]\n** [[UN Documents: Gathering a Body of Global Agreements]] - [[www.un-documents.net/un-docs.htm|http://www.un-documents.net/un-docs.htm]]\n* Information Habitat 2.0 - http://www.information-habitat.net/\n* DataPerfect info - http://www.dataperfect.info/\n!!! Under development\n* Silken Valleys: Where Silicon Valley Meets the Silk Road - http://www.ngo-education.net/silken-valleys\n* Program Editor 3.1
''~TiddlyWiki'' = [[http://www.tiddlywiki.com|www.tiddlywiki.com]] - is a completely self-contained personal wiki powered by ''HTML''. ''Javascript'' & ''Cascading Styles'' that allows one to add and modify 'microcontent' using a simple, yet powerful markup language. Each piece of microcontent, that can include text, images, Javascript macros and/or Cascading Styles, is saved in a separate "tiddler" that records the creator or modifier of the tiddler, the date and time the tiddler was created and last modified, and a set of tags / keywords in addition to the content.\n\n~TiddlyWiki was created by ''Jeremy Ruston'' and is published under an Open Source license that allows anyone to use and share it freely. The incorporation of an "ImportTiddlers" feature makes it easy to import tiddlers from other TiddlyWiki pages, and this site includes a number of "plugin macros" that have been imported from other pages. There is a very active, resourceful and enthusiastic community of thinkers, developers and users who help each other to get the best out of using ~TiddlyWiki.\n\n
/***\n| Name:|ToggleTagMacro|\n| Description:|Makes a checkbox which toggles a tag in a tiddler|\n| Version:|6.1.2|\n| Date:|20-Oct-2006|\n| Source:|http://tiddlyspot.com/mptw/#ToggleTagMacro|\n| Author:|SimonBaird|\n| License:|[[BSD open source license]]|\n| CoreVersion:|2.1|\n!Usage\n{{{<<toggleTag }}}//{{{TagName TiddlerName LabelText}}}//{{{>>}}}\n* TagName - the tag to be toggled, default value "checked"\n* TiddlerName - the tiddler to toggle the tag in, default value the current tiddler\n* LabelText - the text (gets wikified) to put next to the check box, default value is '{{{[[TagName]]}}}' or '{{{[[TagName]] [[TiddlerName]]}}}'\n(If a parameter is '.' then the default will be used)\n\nExamples:\n\n|Code|Description|Example|h\n|{{{<<toggleTag>>}}}|Toggles the default tag (checked) in this tiddler|<<toggleTag>>|\n|{{{<<toggleTag TagName>>}}}|Toggles the TagName tag in this tiddler|<<toggleTag TagName>>|\n|{{{<<toggleTag TagName TiddlerName>>}}}|Toggles the TagName tag in the TiddlerName tiddler|<<toggleTag TagName TiddlerName>>|\n|{{{<<toggleTag TagName TiddlerName 'click me'>>}}}|Same but with custom label|<<toggleTag TagName TiddlerName 'click me'>>|\n|{{{<<toggleTag . . 'click me'>>}}}|dot means use default value|<<toggleTag . . 'click me'>>|\n(Note if TiddlerName doesn't exist it will be silently created)\n\n!Known issues\n* Doesn't smoothly handle the case where you toggle a tag in a tiddler that is current open for editing. Should it stick the tag in the edit box?\n\n***/\n//{{{\n\nmerge(config.macros,{\n\n toggleTag: {\n\n doRefreshAll: true,\n createIfRequired: true,\n shortLabel: "[[%0]]",\n longLabel: "[[%0]] [[%1]]",\n\n handler: function(place,macroName,params,wikifier,paramString,tiddler) {\n var tag = (params[0] && params[0] != '.') ? params[0] : "checked";\n var title = (params[1] && params[1] != '.') ? params[1] : tiddler.title;\n var defaultLabel = (title == tiddler.title ? this.shortLabel : this.longLabel);\n var label = (params[2] && params[2] != '.') ? params[2] : defaultLabel;\n var theTiddler = title == tiddler.title ? tiddler : store.getTiddler(title);\n var cb = createTiddlyCheckbox(place, label.format([tag,title]), theTiddler && theTiddler.isTagged(tag), function(e) {\n if (!store.tiddlerExists(title)) {\n if (config.macros.toggleTag.createIfRequired) {\n var content = store.getTiddlerText(title); // just in case it's a shadow\n store.saveTiddler(title,title,content?content:"",config.options.txtUserName,new Date(),null);\n }\n else \n return false;\n }\n //store.suspendNotifications(); \n store.setTiddlerTag(title,this.checked,tag);\n //refreshDisplay(); \n //store.resumeNotifications();\n return true;\n });\n }\n }\n});\n\n//}}}\n\n
!!!Article 2: Objective\n>The ultimate objective of this Convention and any related legal instruments that the Conference of the Parties may adopt is to achieve, in accordance with the relevant provisions of the Convention, stabilization of greenhouse gas concentrations in the atmosphere at a level that would prevent dangerous anthropogenic interference with the climate system. Such a level should be achieved within a time-frame sufficient to allow ecosystems to adapt naturally to climate change; to ensure that food production is not threatened; and to enable economic development to proceed in a sustainable manner.\n
!!Basic Options\nThe Interface Options use the {{{<<option>>}}} built-in macro to allow you to customise some of the ways this web site behaves. The options you select are saved in your browser, and will remain in effect when you visit this site again. \n\nYour username for signing your edits: <<option txtUserName>>\nConventionally, TiddlyWiki developers suggest this bewritten as a WikiWord (eg JoeBloggs), however TiddlyPerfect recommends a user name with separate elements, eg Firstname Lastname, a Nickname or an organizational name. Note that you will only be able to create or edit tiddlers if the page you are editing is on a local drive \n\n<<option chkSaveBackups>> Save Backups\n<<option chkAutoSave>> Auto Save\n<<option chkRegExpSearch>> RegExpSearch\n<<option chkCaseSensitiveSearch>> Case Sensitive Search\n<<option chkAnimate>> Enable Animations\n----\n!!Advanced Options\n!!!Navigation Options\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 chkOpenInNewWindow>> Open Links In New Window\n!!!Save Options\n<<option chkSaveBackups>> SaveBackups\n<<option chkGenerateAnRssFeed>> Generate an Rss Feed\n<<option chkSaveEmptyTemplate>> Save Empty Template - i.e. just TiddlyWiki, without any of the tiddlers\nFolder name for backup files: <<option txtBackupFolder>>\n<<option chkAutoSave>> Auto Save: When selected, the page will be saved each time you save a tiddler; note that it will slow down your editing, while it protects you from losing your work if your browser crashes. \n!!!Editing Options\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>> Confirm Before Deleting a tiddler\nMaximum number of lines in a tiddler edit box: <<option txtMaxEditRows>>\n<<option chkInsertTabs>> Use tab key to insert tab characters instead of jumping to next field\n!!!Search Options\n<<option chkSearchTitles>> Search in tiddler titles\n<<option chkSearchText>> Search in tiddler text\n<<option chkSearchTags>> Search in tiddler tags\n<<option chkSearchTitlesFirst>> Search results show title matches first\n<<option chkSearchList>> Search results show list of matching tiddlers\n<<option chkSearchIncremental>> Incremental searching\n!!!~YourSearch Options\n<<option chkUseYourSearch>> Use 'Your Search' \n<<option chkPreviewText>> Show Text Preview\n<<option chkSearchAsYouType>> 'Search As You Type' Mode (No RETURN required to start search)\nDefault Search Filter: <<option chkSearchInTitle>>Titles ('!') <<option chkSearchInText>>Texts ('%') <<option chkSearchInTags>>Tags ('#') <html><br><font size="-2">The parts of a tiddlers that are searched when you don't explicitly specify a filter in the search text (using a '!', '%' or '#' prefix).</font></html>\nNumber of items on search result page: <<option txtItemsPerPage>>\nNumber of items on search result page with preview text: <<option txtItemsPerPageWithPreview>>\n!!!Private Settings: \n<<option chkUsePrivateSettings>> Use private settings. \n<<option chkMakeSettingPrivateWhenChanged>> Make setting private when changed.&#160;&#160;&#160;[[Show Settings]].\n^^(Private settings are stored in this ~TiddlyWiki, shared settings are stored as cookies. For more information see the [[Settings documentation|SettingsPlugin Documentation]].)^^\n!!Plugins\n[[PluginManager]]\n\n
<!--{{{-->\n\n<div class='toolbar'>\n <span macro="showWhenTagged systemConfig">\n <span macro="toggleTag systemConfigDisable . '[[disable|systemConfigDisable]]'"></span>\n </span>\n <span style="padding:1em;"></span>\n <span macro='toolbar closeTiddler closeOthers deleteTiddler undoChanges permalink fullscreen references newTiddler newJournal jump +editTiddler '></span>\n</div>\n\n<div class="tagglyTagged" macro="tags"></div>\n\n<div class='titleContainer'>\n <span class='title' macro='view title'></span>\n <span macro="miniTag"></span>\n</div>\n\n<!-- <div class='subtitle'> <span macro='view modifier link'></span>, created <span macro='view created date [[YYYY.0MM.0DD]]'></span>, modified <span macro='view modified date [[YYYY.0MM.0DD]]'></span></div> -->\n\n<div macro="showWhenExists ViewPanelTemplate">[[ViewPanelTemplate]]</div>\n\n<div macro="hideWhen tiddler.tags.containsAny(['css','html','pre','systemConfig']) && !tiddler.text.match('{{'+'{')">\n <div class='viewer' macro='view text wikified'></div>\n</div>\n<div macro="showWhen tiddler.tags.containsAny(['css','html','pre','systemConfig']) && !tiddler.text.match('{{'+'{')">\n <div class='viewer'><pre macro='view text'></pre></div>\n</div>\n\n<div macro="showWhenExists ViewDashboardTemplate">[[ViewDashboardTemplate]]</div>\n\n<div class="tagglyTagging" macro="tagglyTagging"></div>\n\n<!--}}}-->
Welcome to this pilot TiddlyPerfect web site on ''The Economics of Climate Change: The Stern Review - 2.0'' that is a //work in progress// that has served as a founding element of [[Climate Change 2.0]] - a broader approach to addressing dangerous man-made global climate change / global warming based on an appreciation of a concurrent, apparently beneficial change in climate that has been taking place as humanity undergoes a millennial transition to inhabiting a vast, intelligent knowledge-based universe. \n\nChapter 1 is the only complete chapter in this demonstration site; for the remaining chapters, only the key messages and an outline of the chapter sections have been included, as the process of converting and reformatting text for import into the DataPerfect database, and extracting, cropping and resizing the figures from the pdf version is cumbersome and time-consuming; completion of the conversion would be greatly simplified with access to the original Word files.\n\n''Climate Change 2.0'' being developed as a jointly-convened Working Group of the [[Networking Sub-Committee]] of the [[Planning Committee]] for the 60th Annual DPI/NGO Conference and the [[Information and Communications Sub-Committee]] of the [[NGO Committee on Education]] of the [[Conference Of NGOs]] to promote awareness and understanding of the Review, of the profound economic implications of climate change and of the urgency of action by all sectors of society - government, private sector, communities, individuals - at all level - local, national & global. The preparation of this version of the Stern Review was an important catalyst and initial key component of what has become [[Climate Change 2.0]] - a framework for harnessing the powers, properties and collective intelligence of a digital knowledge universe to address the critical global challenge of "dangerous anthropogenic climate change" - dangerous climate change caused by human activities.\n\nThe site has been developed with the goals of:\n* Enhancing access to the wealth of information in this important - and lengthy - Review\n* Providing for a fuller integration of the extensive information in the Review\n* Optimizing access to its contents in a digital environment\nAmong the enhancements that have been made to the contents of the official version of the document are:\n* Progressive compilation of the contents of the Review into a DataPerfect relational database\n* The use of the powerful TiddlyWiki software for presentation of the document, with the content generated from the database\n* The systematic addition of bookmarks to the pdf files of the Review released by the Treasury Department of the UK Government\n* The extraction of highlights of the 27 page Executive Summary into a 2-page summary\n* Highlighting the Key Messages of each chapter\n* Addition of keywords / tags to the chapters (in progress)\n* Addition of missing links to some of the reference documents cited in The Review\n//Please note that this web site is a work in progress.// Comments and suggestions are welcome; please use the [[Contact form]]\n\nAdditional details on the methodology and on the software applications that have been used in this re-publication of the Stern Review can be found in the [[Technical Notes]].
I'm hoping that after using TiddlyWiki for a while a new WritingStyle will emerge that is appropriate for this medium. Jakob Neilsen wrote an article about [[writing styles|http://www.useit.com/alertbox/980906.html]] for MicroContent back in 1998 that still seems surprisingly relevant.
* [[Your Search]]\n* [[Your Search: Introduction]]\n* [[Your Search Options]]\n* [[Your Search Result]]\n* [[Your Search Item Template]]\n* [[Your Search Result Template]]\n* [[Your Search Style Sheet]]\n* [[Your Search Help]]
Your Search Options are made possible through the inclusion of YourSearch - one of many PluginMacros that can be imported into any TiddlyWiki.\n\n<<tiddler [[YourSearch Introduction]]>>\n!Filtered Search<html><a name='Filtered'/></html>\nUsing the Filtered Search you can restrict your search to certain parts of a tiddler, e.g only search the tags or only the titles.\n|!What you want|!What you type|!Example|\n|Search ''titles only''|start word with ''!''|{{{!jonny}}}|\n|Search ''contents only''|start word with ''%''|{{{%football}}}|\n|Search ''tags only''|start word with ''#''|{{{#Plugin}}}|\n\nYou may use more than one filter for a word. E.g. {{{!#Plugin}}} finds tiddlers containing "Plugin" either in the title or in the tags (but does not look for "Plugin" in the content).\n\n!Boolean Search<html><a name='Boolean'/></html>\nThe Boolean Search is useful when searching for multiple words.\n|!What you want|!What you type|!Example|\n|''All words'' must exist|List of words|{{{jonny jeremy}}}|\n|''At least one word'' must exist|Separate words by ''or''|{{{jonny or jeremy}}}|\n|A word ''must not exist''|Start word with ''-''|{{{-jonny}}}|\n\n''Note:'' When you specify two words, separated with a space, YourSearch finds all tiddlers that contain both words, but not necessarily next to each other. If you want to find a sequence of word, e.g. '{{{John Brown}}}', you need to put the words into quotes. I.e. you type: {{{"john brown"}}}.\n\n!'Exact Word' Search<html><a name='Exact'/></html>\nBy default a search result all matches that 'contain' the searched text. \n E.g. if you search for 'Task' you will get all tiddlers containing 'Task', but also 'CompletedTask', 'TaskForce' etc.\n\nIf you only want to get the tiddlers that contain 'exactly the word' you need to prefix it with a '='. E.g. typing '=Task' will the tiddlers that contain the word 'Task', ignoring words that just contain 'Task' as a substring.\n\n!Combined Search<html><a name='Combined'/></html>\nYou are free to combine the various search options. \n\n''Examples''\n|!What you type|!Result|\n|{{{!jonny !jeremy -%football}}}| all tiddlers with both {{{jonny}}} and {{{jeremy}}} in its titles, but no {{{football}}} in content.|\n|{{{#=Task}}}|All tiddlers tagged with 'Task' (the exact word). Tags named 'CompletedTask', 'TaskForce' etc. are not considered.|\n\n!~CaseSensitiveSearch and ~RegExpSearch<html><a name='Case'/></html>\nThe standard search options ~CaseSensitiveSearch and ~RegExpSearch are fully supported by YourSearch. However when ''~RegExpSearch'' is on Filtered and Boolean Search are disabled.\n\n!Access Keys<html><a name='Access'/></html>\nYou are encouraged to use the access keys (also called "shortcut" keys) for the most frequently used operations. For quick reference these shortcuts are also mentioned in the tooltip for the various buttons etc.\n\n|!Key|!Operation|\n|{{{Alt-F}}}|''The most important keystroke'': It moves the cursor to the search input field so you can directly start typing your query. Pressing {{{Alt-F}}} will also display the previous search result. This way you can quickly display multiple tiddlers using "Press {{{Alt-F}}}. Select tiddler." sequences.|\n|{{{ESC}}}|Closes the [[YourSearch Result]]. When the [[YourSearch Result]] is already closed and the cursor is in the search input field the field's content is cleared so you start a new query.|\n|{{{Alt-1}}}, {{{Alt-2}}},... |Pressing these keys opens the first, second etc. tiddler from the result list.|\n|{{{Alt-O}}}|Opens all found tiddlers.|\n|{{{Alt-P}}}|Toggles the 'Preview Text' mode.|\n|{{{Alt-'<'}}}, {{{Alt-'>'}}}|Displays the previous or next page in the [[YourSearch Result]].|\n|{{{Return}}}|When you have turned off the 'as you type' search mode pressing the {{{Return}}} key actually starts the search (as does pressing the 'search' button).|\n
<!--\n{{{\n-->\n<span class='yourSearchNumber' macro='foundTiddler number'></span>\n<span class='yourSearchTitle' macro='foundTiddler title'/></span>&nbsp;-&nbsp;\n<span class='yourSearchTags' macro='foundTiddler tags'/></span>\n<span macro="yourSearch if previewText"><div class='yourSearchText' macro='foundTiddler text'/></div></span>\n<!--\n}}}\n-->
|>|!YourSearch Options|\n|>|<<option chkUseYourSearch>> Use 'Your Search'|\n|!|<<option chkPreviewText>> Show Text Preview|\n|!|<<option chkSearchAsYouType>> 'Search As You Type' Mode (No RETURN required to start search)|\n|!|Default Search Filter:<<option chkSearchInTitle>>Titles ('!') <<option chkSearchInText>>Texts ('%') <<option chkSearchInTags>>Tags ('#') <html><br><font size="-2">The parts of a tiddlers that are searched when you don't explicitly specify a filter in the search text (using a '!', '%' or '#' prefix).</font></html>|\n|!|Number of items on search result page: <<option txtItemsPerPage>>|\n|!|Number of items on search result page with preview text: <<option txtItemsPerPageWithPreview>>|\n
!About YourSearch\n\nYourSearch gives you a bunch of new features to simplify and speed up your daily searches in TiddlyWiki. It seamlessly integrates into the standard TiddlyWiki search: just start typing into the 'search' field and explore!\n\n''May the '~Alt-F' be with you.''\n\n!Features\n* YourSearch searches for tiddlers that match your query ''as you type'' into the 'search' field. It presents a list of the ''"Top Ten"'' tiddlers in a ''popup-like window'': the ''[[YourSearch Result]]''. The tiddlers currently displayed in your TiddlyWiki are not affected.\n* Using ''~TiddlerRank technology'' the [[YourSearch Result]] lists the ''most interesting tiddlers first''.\n* Through ''Filtered Search'' and ''Boolean Search'' you can easily refining your search, like excluding words or searching for multiple words. This way less tiddlers are displayed in the [[YourSearch Result]] and you can faster scan the result for the tiddler you are looking for.\n* The [[YourSearch Result]] lists the found tiddlers ''page-wise'', e.g. 10 per page. Use the ''Result Page Navigation Bar'' to navigate between pages if the result does not fit on one page.\n* The [[YourSearch Result]] states the ''total number of found tiddlers''. This way you can quickly decide if you want to browse the result list or if you want to refine your search first to shorten the result list.\n* Beside the ''title of the found tiddlers'' the [[YourSearch Result]] also ''displays tags'' and ''tiddler text previews''. The ''tiddler text preview'' is an extract of the tiddler's content, showing the most interesting parts related to your query (e.g. the texts around the words you are looking for).\n* The words you are looking for are hilited in the titles, tags and text previews of the [[YourSearch Result]].\n* If you are not interested in the tiddler text previews but prefer to get longer lists of tiddlers on one result page you may ''switch of the text preview''.\n* If the [[YourSearch Result]] contains the tiddler you are looking for you can just ''click its title to display'' it in your TiddlyWiki. Alternatively you may also ''open all found tiddlers'' at once. \n* Use [[YourSearch Options]] to customize YourSearch to your needs. E.g. depending on the size of your screen you may change the number of tiddlers displayed in the [[YourSearch Result]]. In the [[YourSearch Options]] and the AdvancedOptions you may also switch off YourSearch in case you temporarily want to use the standard search.\n* For the most frequently actions ''access keys'' are defined so you can perform your search without using the mouse.\n\n
<<tiddler [[YourSearch Introduction]]>>\n!Filtered Search<html><a name='Filtered'/></html>\nUsing the Filtered Search you can restrict your search to certain parts of a tiddler, e.g only search the tags or only the titles.\n|!What you want|!What you type|!Example|\n|Search ''titles only''|start word with ''!''|{{{!jonny}}}|\n|Search ''contents only''|start word with ''%''|{{{%football}}}|\n|Search ''tags only''|start word with ''#''|{{{#Plugin}}}|\n\nYou may use more than one filter for a word. E.g. {{{!#Plugin}}} finds tiddlers containing "Plugin" either in the title or in the tags (but does not look for "Plugin" in the content).\n\n!Boolean Search<html><a name='Boolean'/></html>\nThe Boolean Search is useful when searching for multiple words.\n|!What you want|!What you type|!Example|\n|''All words'' must exist|List of words|{{{jonny jeremy}}}|\n|''At least one word'' must exist|Separate words by ''or''|{{{jonny or jeremy}}}|\n|A word ''must not exist''|Start word with ''-''|{{{-jonny}}}|\n\n''Note:'' When you specify two words, separated with a space, YourSearch finds all tiddlers that contain both words, but not necessarily next to each other. If you want to find a sequence of word, e.g. '{{{John Brown}}}', you need to put the words into quotes. I.e. you type: {{{"john brown"}}}.\n\n!'Exact Word' Search<html><a name='Exact'/></html>\nBy default a search result all matches that 'contain' the searched text. \n E.g. if you search for 'Task' you will get all tiddlers containing 'Task', but also 'CompletedTask', 'TaskForce' etc.\n\nIf you only want to get the tiddlers that contain 'exactly the word' you need to prefix it with a '='. E.g. typing '=Task' will the tiddlers that contain the word 'Task', ignoring words that just contain 'Task' as a substring.\n\n!Combined Search<html><a name='Combined'/></html>\nYou are free to combine the various search options. \n\n''Examples''\n|!What you type|!Result|\n|{{{!jonny !jeremy -%football}}}| all tiddlers with both {{{jonny}}} and {{{jeremy}}} in its titles, but no {{{football}}} in content.|\n|{{{#=Task}}}|All tiddlers tagged with 'Task' (the exact word). Tags named 'CompletedTask', 'TaskForce' etc. are not considered.|\n\n!~CaseSensitiveSearch and ~RegExpSearch<html><a name='Case'/></html>\nThe standard search options ~CaseSensitiveSearch and ~RegExpSearch are fully supported by YourSearch. However when ''~RegExpSearch'' is on Filtered and Boolean Search are disabled.\n\n!Access Keys<html><a name='Access'/></html>\nYou are encouraged to use the access keys (also called "shortcut" keys) for the most frequently used operations. For quick reference these shortcuts are also mentioned in the tooltip for the various buttons etc.\n\n|!Key|!Operation|\n|{{{Alt-F}}}|''The most important keystroke'': It moves the cursor to the search input field so you can directly start typing your query. Pressing {{{Alt-F}}} will also display the previous search result. This way you can quickly display multiple tiddlers using "Press {{{Alt-F}}}. Select tiddler." sequences.|\n|{{{ESC}}}|Closes the [[YourSearch Result]]. When the [[YourSearch Result]] is already closed and the cursor is in the search input field the field's content is cleared so you start a new query.|\n|{{{Alt-1}}}, {{{Alt-2}}},... |Pressing these keys opens the first, second etc. tiddler from the result list.|\n|{{{Alt-O}}}|Opens all found tiddlers.|\n|{{{Alt-P}}}|Toggles the 'Preview Text' mode.|\n|{{{Alt-'<'}}}, {{{Alt-'>'}}}|Displays the previous or next page in the [[YourSearch Result]].|\n|{{{Return}}}|When you have turned off the 'as you type' search mode pressing the {{{Return}}} key actually starts the search (as does pressing the 'search' button).|\n\n
/***\n|''Name:''|~YourSearch plugin macro|h\n|''Version:''|2.0.2 (2006-02-13)|\n|''Source:''|http://tiddlywiki.abego-software.de/#YourSearchPlugin|\n|''Author:''|[[Udo Borkowski]] (ub [at] abego-software [dot] de)|\n|''Licence:''|[[BSD open source license]]|\n|''TiddlyWiki:''|2.0|\n|''Browser:''|Firefox 1.0.4+; Firefox 1.5; InternetExplorer 6.0|\n<<tiddler [[YourSearch Introduction]]>>\nFor more information see [[Help|YourSearch Help]].\n\n!Compatibility\nThis plugin requires TiddlyWiki 2.0. \nUse http://tiddlywiki.abego-software.de/#YourSearchPlugin-1.0.1 for older TiddlyWiki versions.\n\n!Revision history\n* v2.0.2 (2006-02-13)\n** Bugfix for Firefox 1.5.0.1 related to the "Show prefix" checkbox. Thanks to Ted Pavlic for reporting and to BramChen for fixing. \n** Internal\n*** Make "JSLint" conform\n* v2.0.1 (2006-02-05)\n** Support "Exact Word Match" (use '=' to prefix word)\n** Support default filter settings (when no filter flags are given in search term)\n** Rework on the "less than 3 chars search text" feature (thanks to EricShulman)\n** Better support SinglePageMode when doing "Open all tiddlers" (thanks to EricShulman)\n** Support Firefox 1.5.0.1\n** Bug: Fixed a hilite bug in "classic search mode" (thanks to EricShulman)\n* v2.0.0 (2006-01-16)\n** Add User Interface\n* v1.0.1 (2006-01-06)\n** Support TiddlyWiki 2.0\n* v1.0.0 (2005-12-28)\n** initial version\n!Code\nThe code is compressed. \n\nYou can retrieve a readable source code version from http://tiddlywiki.abego-software.de/#YourSearchPlugin-src.\n/%\n***/\nif(!version.extensions.YourSearchPlugin){version.extensions.YourSearchPlugin={major:2,minor:0,revision:2,date:new Date(2006,2,13),type:"plugin",source:"http://tiddlywiki.abego-software.de/#YourSearchPlugin"};var alertAndThrow=function(_1){alert(_1);throw _1;};if(!window.abego){window.abego={};}if(abego.YourSearch){alertAndThrow("abego.YourSearch already defined");}abego.YourSearch={};if(version.major<2){alertAndThrow("YourSearchPlugin requires TiddlyWiki 2.0 or newer.\sn\snGet YourSearch 1.0.1 to use YourSearch with older versions of TiddlyWiki.\sn\snhttp://tiddlywiki.abego-software.de/#YourSearchPlugin-1.0.1");}var STQ=function(_2,_3,_4,_5){this.queryText=_2;this.caseSensitive=_3;if(_5){this.regExp=new RegExp(_2,_3?"mg":"img");return;}this.terms=[];var re=/\ss*(\s-)?([#%!=]*)(?:(?:("(?:(?:\s\s")|[^"])*")|(\sS+)))(?:\ss+((?:[aA][nN][dD])|(?:[oO][rR]))(?!\sS))?/mg;var _7=re.exec(_2);while(_7!=null&&_7.length==6){var _8="-"==_7[1];var _9=_7[2];var _a=_9.indexOf("!")>=0;var _b=_9.indexOf("%")>=0;var _c=_9.indexOf("#")>=0;var _d=_9.indexOf("=")>=0;if(!_a&&!_b&&!_c){_a=config.options.chkSearchInTitle;_b=config.options.chkSearchInText;_c=config.options.chkSearchInTags;if(!_a&&!_b&&!_c){_a=_b=_c=true;}}if(_4){_b=false;_c=false;}var _e;if(_7[3]){try{_e=eval(_7[3]);}catch(ex){}}else{_e=_7[4];}if(!_e){throw "Invalid search expression: %0".format([_2]);}var _f=_7[5]&&_7[5].charAt(0).toLowerCase()=="o";this.terms.push(new STQ.Term(_e,_a,_b,_c,_8,_f,_3,_d));_7=re.exec(_2);}};var me=STQ.prototype;me.getMatchingTiddlers=function(_10){var _11=[];for(var i in _10){var t=_10[i];if((t instanceof Tiddler)&&this.matchesTiddler(t)){_11.push(t);}}return _11;};me.matchesTiddler=function(_14){if(this.regExp){return this.regExp.test(_14.title)||this.regExp.test(_14.text);}var n=this.terms.length;if(n==0){return false;}var _16=this.terms[0].matchesTiddler(_14);for(var i=1;i<this.terms.length;i++){if(this.terms[i-1].orFollows){if(!_16){_16|=this.terms[i].matchesTiddler(_14);}}else{if(_16){_16&=this.terms[i].matchesTiddler(_14);}}}return _16;};me.getOnlyMatchTitleQuery=function(){if(!this.onlyMatchTitleQuery){this.onlyMatchTitleQuery=new STQ(this.queryText,this.caseSensitive,true,this.useRegExp);}return this.onlyMatchTitleQuery;};me.getMarkRegExp=function(){if(this.regExp){return "".search(this.regExp)>=0?null:this.regExp;}var _18={};var n=this.terms.length;for(var i=0;i<this.terms.length;i++){var _1b=this.terms[i];if(!_1b.negate){_18[_1b.text]=true;}}var _1c=[];for(var t in _18){_1c.push("("+t.escapeRegExp()+")");}if(_1c.length==0){return null;}var _1e=_1c.join("|");return new RegExp(_1e,this.caseSensitive?"mg":"img");};me.toString=function(){if(this.regExp){return this.regExp.toString();}var _1f="";for(var i=0;i<this.terms.length;i++){_1f+=this.terms[i].toString();}return _1f;};STQ.Term=function(_21,_22,_23,_24,_25,_26,_27,_28){this.text=_21;this.inTitle=_22;this.inText=_23;this.inTag=_24;this.negate=_25;this.orFollows=_26;this.caseSensitive=_27;this.wordMatch=_28;var _29=_21.escapeRegExp();if(this.wordMatch){_29="\s\sb"+_29+"\s\sb";}this.regExp=new RegExp(_29,"m"+(_27?"":"i"));};STQ.Term.prototype.toString=function(){return (this.negate?"-":"")+(this.inTitle?"!":"")+(this.inText?"%":"")+(this.inTag?"#":"")+(this.wordMatch?"=":"")+"\s""+this.text+"\s""+(this.orFollows?" OR ":" AND ");};STQ.Term.prototype.matchesTiddler=function(_2a){if(!_2a){return false;}if(this.inTitle&&this.regExp.test(_2a.title)){return !this.negate;}if(this.inText&&this.regExp.test(_2a.text)){return !this.negate;}if(this.inTag){var _2b=_2a.tags;if(_2b){for(var i=0;i<_2b.length;i++){if(this.regExp.test(_2b[i])){return !this.negate;}}}}return this.negate;};var stringToInt=function(s,_2e){if(!s){return _2e;}var n=parseInt(s);return (n==NaN)?_2e:n;};var getIntAttribute=function(_30,_31,_32){return stringToInt(_30.getAttribute(_31));};var isDescendantOrSelf=function(_33,e){while(e!=null){if(_33==e){return true;}e=e.parentNode;}return false;};var getMatchCount=function(s,re){var m=s.match(re);return m?m.length:0;};var createEllipsis=function(_38){var e=createTiddlyElement(_38,"span");e.innerHTML="&hellip;";};var isWordChar=function(c){return (c>="a"&&c<="z")||(c>="A"&&c<="Z")||c=="_";};var getWordBounds=function(s,_3c){if(!isWordChar(s[_3c])){return null;}for(var i=_3c-1;i>=0&&isWordChar(s[i]);i--){}var _3e=i+1;var n=s.length;for(i=_3c+1;i<n&&isWordChar(s[i]);i++){}return {start:_3e,end:i};};var removeTextDecoration=function(s){var _41=["''","{{{","}}}","//","<<<","/***","***/"];var _42="";for(var i=0;i<_41.length;i++){if(i!=0){_42+="|";}_42+="("+_41[i].escapeRegExp()+")";}return s.replace(new RegExp(_42,"mg"),"").trim();};var logText="";var lastLogTime=null;var logMessage=function(_44,s){var now=new Date();var _47=lastLogTime?(now-lastLogTime).toString():"";logText+="<tr><td>"+now.convertToYYYYMMDDHHMMSSMMM()+"</td><td align='right'>"+_47+"</td><td>"+_44+"</td><td>"+s.htmlEncode()+"</td></tr>\sn";lastLogTime=now;};function writeLog(){var t=" <<JsDoIt 'WriteLog' 'WriteLog' 'javascript:writeLog();story.closeTiddler(\s"Log\s");story.displayTiddler(null,\s"Log\s");'>>"+"<html><table><tbody><tr><th>Time</th><th>Delta (ms)</th><th>Kind</th><th>Message</th></tr>\sn"+logText+"</tbody></table></html>";store.saveTiddler("Log","Log",t,config.options.txtUserName,new Date(),["System","Log"]);logText="";lastLogTime=null;}var yourSearchResultID="yourSearchResult";var yourSearchResultItemsID="yourSearchResultItems";var maxCharsInTitle=80;var maxCharsInTags=50;var maxCharsInText=250;var maxPagesInNaviBar=10;var itemsPerPageDefault=25;var itemsPerPageWithPreviewDefault=10;var minMatchWithContextSize=40;var maxMovementForWordCorrection=4;var matchInTitleWeight=4;var precisionInTitleWeight=10;var matchInTagsWeight=2;var resultElement;var lastResults;var lastQuery;var lastSearchText;var searchInputField;var searchButton;var firstIndexOnPage=0;var currentTiddler;var indexInPage;var indexInResult;var getItemsPerPage=function(){var n=(config.options.chkPreviewText)?stringToInt(config.options.txtItemsPerPageWithPreview,itemsPerPageWithPreviewDefault):stringToInt(config.options.txtItemsPerPage,itemsPerPageDefault);return (n>0)?n:1;};var standardRankFunction=function(_4a,_4b){var _4c=_4b.getMarkRegExp();if(!_4c){return 1;}var _4d=_4a.title.match(_4c);var _4e=_4d?_4d.length:0;var _4f=getMatchCount(_4a.getTags(),_4c);var _50=_4d?_4d.join("").length:0;var _51=_4a.title.length>0?_50/_4a.title.length:0;var _52=_4e*matchInTitleWeight+_4f*matchInTagsWeight+_51*precisionInTitleWeight+1;return _52;};var findMatches=function(_53,_54,_55,_56,_57,_58){lastSearchText=_54;var _59=_53.reverseLookup("tags",_58,false);var _5a=new STQ(_54,_55,false,_56);lastQuery=_5a;var _5b=_5a.getMatchingTiddlers(_59);var _5c=abego.YourSearch.getRankFunction();for(var i=0;i<_5b.length;i++){var _5e=_5b[i];var _5f=_5c(_5e,_5a);_5e.searchRank=_5f;}if(!_57){_57="title";}var _60=function(a,b){var _63=a.searchRank-b.searchRank;if(_63==0){if(a[_57]==b[_57]){return (0);}else{return (a[_57]<b[_57])?-1:+1;}}else{return (_63>0)?-1:+1;}};_5b.sort(_60);lastResults=_5b;return _5b;};var moveToWordBorder=function(s,_65,_66){var _67;if(_66){_67=getWordBounds(s,_65);}else{if(_65<=0){return _65;}_67=getWordBounds(s,_65-1);}if(!_67){return _65;}if(_66){if(_67.start>=_65-maxMovementForWordCorrection){return _67.start;}if(_67.end<=_65+maxMovementForWordCorrection){return _67.end;}}else{if(_67.end<=_65+maxMovementForWordCorrection){return _67.end;}if(_67.start>=_65-maxMovementForWordCorrection){return _67.start;}}return _65;};var getContextRangeAround=function(s,_69,_6a,_6b,_6c){var _6d=Math.max(Math.floor(_6c/(_6b+1)),minMatchWithContextSize);var _6e=Math.max(_6d-(_6a-_69),0);var _6f=Math.min(Math.floor(_6a+_6e/3),s.length);var _70=Math.max(_6f-_6d,0);_70=moveToWordBorder(s,_70,true);_6f=moveToWordBorder(s,_6f,false);return {start:_70,end:_6f};};var getTextAndMatchArray=function(s,_72){var _73=[];if(_72){var _74=0;var n=s.length;var _76=0;do{_72.lastIndex=_74;var _77=_72.exec(s);if(_77){if(_74<_77.index){var t=s.substring(_74,_77.index);_73.push({text:t});}_73.push({text:_77[0],isMatch:true});_74=_77.index+_77[0].length;}else{_73.push({text:s.substr(_74)});break;}}while(true);}else{_73.push({text:s});}return _73;};var simpleCreateLimitedTextWithMarks=function(_79,s,_7b){if(!lastQuery){return;}var _7c=getTextAndMatchArray(s,lastQuery.getMarkRegExp());var _7d=0;for(var i=0;i<_7c.length&&_7d<_7b;i++){var t=_7c[i];var _80=t.text;if(t.isMatch){createTiddlyElement(_79,"span",null,"marked",_80);}else{var _81=_7b-_7d;if(_81<_80.length){_80=_80.substring(0,_81)+"...";}createTiddlyText(_79,_80);}_7d+=_80.length;}};var addRange=function(_82,_83,_84){var n=_82.length;if(n==0){_82.push({start:_83,end:_84});return;}var i=0;for(;i<n;i++){var _87=_82[i];if(_87.start<=_84&&_83<=_87.end){var r;var _89=i+1;for(;_89<n;_89++){r=_82[_89];if(r.start>_84||_83>_87.end){break;}}var _8a=_83;var _8b=_84;for(var j=i;j<_89;j++){r=_82[j];_8a=Math.min(_8a,r.start);_8b=Math.max(_8b,r.end);}_82.splice(i,_89-i,{start:_8a,end:_8b});return;}if(_87.start>_84){break;}}_82.splice(i,0,{start:_83,end:_84});};var getTotalRangesSize=function(_8d){var _8e=0;for(var i=0;i<_8d.length;i++){var _90=_8d[i];_8e+=_90.end-_90.start;}return _8e;};var writeTextAndMatchRange=function(_91,s,_93,_94,_95){var t;var _97;var pos=0;var i=0;var _9a=0;for(;i<_93.length;i++){t=_93[i];_97=t.text;if(_94<pos+_97.length){_9a=_94-pos;break;}pos+=_97.length;}var _9b=_95-_94;for(;i<_93.length&&_9b>0;i++){t=_93[i];_97=t.text.substr(_9a);_9a=0;if(_97.length>_9b){_97=_97.substr(0,_9b);}if(t.isMatch){createTiddlyElement(_91,"span",null,"marked",_97);}else{createTiddlyText(_91,_97);}_9b-=_97.length;}if(_95<s.length){createEllipsis(_91);}};var getMatchedTextCount=function(_9c){var _9d=0;for(var i=0;i<_9c.length;i++){if(_9c[i].isMatch){_9d++;}}return _9d;};var getMatchedTextWithContextRanges=function(_9f,s,_a1){var _a2=[];var _a3=getMatchedTextCount(_9f);var pos=0;for(var i=0;i<_9f.length;i++){var t=_9f[i];var _a7=t.text;if(t.isMatch){var _a8=getContextRangeAround(s,pos,pos+_a7.length,_a3,_a1);addRange(_a2,_a8.start,_a8.end);}pos+=_a7.length;}return _a2;};var fillUpRanges=function(s,_aa,_ab){var _ac=_ab-getTotalRangesSize(_aa);while(_ac>0){if(_aa.length==0){addRange(_aa,0,moveToWordBorder(s,_ab,false));return;}else{var _ad=_aa[0];var _ae;var _af;if(_ad.start==0){_ae=_ad.end;if(_aa.length>1){_af=_aa[1].start;}else{addRange(_aa,_ae,moveToWordBorder(s,_ae+_ac,false));return;}}else{_ae=0;_af=_ad.start;}var _b0=Math.min(_af,_ae+_ac);addRange(_aa,_ae,_b0);_ac-=(_b0-_ae);}}};var writeRanges=function(_b1,s,_b3,_b4,_b5){if(_b4.length==0){return;}if(_b4[0].start>0){createEllipsis(_b1);}var _b6=_b5;for(var i=0;i<_b4.length&&_b6>0;i++){var _b8=_b4[i];var len=Math.min(_b8.end-_b8.start,_b6);writeTextAndMatchRange(_b1,s,_b3,_b8.start,_b8.start+len);_b6-=len;}};var createLimitedTextWithMarksAndContext=function(_ba,s,_bc){if(!lastQuery){return;}if(s.length<_bc){_bc=s.length;}var _bd=getTextAndMatchArray(s,lastQuery.getMarkRegExp());var _be=getMatchedTextWithContextRanges(_bd,s,_bc);fillUpRanges(s,_be,_bc);writeRanges(_ba,s,_bd,_be,_bc);};var createLimitedTextWithMarks=function(_bf,s,_c1){return createLimitedTextWithMarksAndContext(_bf,s,_c1);};var myStorySearch=function(_c2,_c3,_c4){highlightHack=new RegExp(_c4?_c2:_c2.escapeRegExp(),_c3?"mg":"img");var _c5=findMatches(store,_c2,_c3,_c4,"title","excludeSearch");firstIndexOnPage=0;showResult();highlightHack=null;};var myMacroSearchHandler=function(_c6,_c7,_c8){var _c9="";var _ca=null;var _cb=function(txt){if(config.options.chkUseYourSearch){myStorySearch(txt.value,config.options.chkCaseSensitiveSearch,config.options.chkRegExpSearch);}else{story.search(txt.value,config.options.chkCaseSensitiveSearch,config.options.chkRegExpSearch);}_c9=txt.value;};var _cd=function(e){_cb(searchInputField);return false;};var _cf=function(e){if(!e){var e=window.event;}switch(e.keyCode){case 13:_cb(this);break;case 27:if(isResultOpen()){closeResult();}else{this.value="";clearMessage();}break;}if(String.fromCharCode(e.keyCode)==this.accessKey||e.altKey){reopenResultIfApplicable();}if(this.value.length<3&&_ca){clearTimeout(_ca);}if((this.value.length>2)&&(this.value!=_c9)){if(!config.options.chkUseYourSearch||config.options.chkSearchAsYouType){if(_ca){clearTimeout(_ca);}var txt=this;_ca=setTimeout(function(){_cb(txt);},500);}}if(this.value.length==0){closeResult();}};var _d3=function(e){this.select();reopenResultIfApplicable();};var btn=createTiddlyButton(_c6,this.label,this.prompt,_cd);var txt=createTiddlyElement(_c6,"input",null,null,null);if(_c8[0]){txt.value=_c8[0];}txt.onkeyup=_cf;txt.onfocus=_d3;txt.setAttribute("size",this.sizeTextbox);txt.setAttribute("accessKey",this.accessKey);txt.setAttribute("autocomplete","off");if(config.browser.isSafari){txt.setAttribute("type","search");txt.setAttribute("results","5");}else{txt.setAttribute("type","text");}searchInputField=txt;searchButton=btn;};var isResultOpen=function(){return resultElement!=null&&resultElement.parentNode==document.body;};var closeResult=function(){if(isResultOpen()){document.body.removeChild(resultElement);}};var openAllFoundTiddlers=function(){closeResult();if(lastResults){var _d7=[];for(var i=0;i<lastResults.length;i++){_d7.push(lastResults[i].title);}story.displayTiddlers(null,_d7);}};var refreshResult=function(){if(!resultElement||!searchInputField){return;}var _d9=store.getTiddlerText("YourSearchResultTemplate");if(!_d9){_d9="<b>Tiddler YourSearchResultTemplate not found</b>";}resultElement.innerHTML=_d9;firstIndexOnPage=Math.floor(firstIndexOnPage/getItemsPerPage())*getItemsPerPage();applyHtmlMacros(resultElement,null);refreshElements(resultElement,null);if(lastResults&&lastResults.length>0){var _da=store.getTiddlerText("YourSearchItemTemplate");if(!_da){alertAndThrow("YourSearchItemTemplate not found");}var _db=document.getElementById(yourSearchResultItemsID);if(!_db){_db=createTiddlyElement(resultElement,"div",yourSearchResultItemsID);}var _dc=Math.min(firstIndexOnPage+getItemsPerPage(),lastResults.length);indexInPage=-1;for(var i=firstIndexOnPage;i<_dc;i++){currentTiddler=lastResults[i];indexInPage++;indexInResult=i;var _de=createTiddlyElement(_db,"div",null,"yourSearchItem");_de.innerHTML=_da;applyHtmlMacros(_de,null);refreshElements(_de,null);}}currentTiddler=null;ensureResultIsDisplayedNicely();};var ensureResultIsDisplayedNicely=function(){adjustResultPositionAndSize();scrollVisible();};var scrollVisible=function(){if(resultElement){window.scrollTo(0,ensureVisible(resultElement));}if(searchInputField){window.scrollTo(0,ensureVisible(searchInputField));}};var adjustResultPositionAndSize=function(){if(!searchInputField){return;}var _df=searchInputField;var _e0=findPosX(_df);var _e1=findPosY(_df);var _e2=_df.offsetHeight;var _e3=_e0;var _e4=_e1+_e2;var _e5=findWindowWidth();if(_e5<resultElement.offsetWidth){resultElement.style.width=(_e5-100)+"px";_e5=findWindowWidth();}var _e6=resultElement.offsetWidth;if(_e3+_e6>_e5){_e3=_e5-_e6-30;}if(_e3<0){_e3=0;}resultElement.style.left=_e3+"px";resultElement.style.top=_e4+"px";resultElement.style.display="block";};var showResult=function(){if(!resultElement){resultElement=createTiddlyElement(document.body,"div",yourSearchResultID,"yourSearchResult");}else{if(resultElement.parentNode!=document.body){document.body.appendChild(resultElement);}}refreshResult();};var reopenResultIfApplicable=function(){if(searchInputField==null||!config.options.chkUseYourSearch){return;}if((searchInputField.value==lastSearchText)&&lastSearchText&&!isResultOpen()){if(resultElement&&(resultElement.parentNode!=document.body)){document.body.appendChild(resultElement);ensureResultIsDisplayedNicely();}else{showResult();}}};var setFirstIndexOnPage=function(_e7){if(!lastResults||lastResults.length==0){return;}firstIndexOnPage=Math.min(Math.max(0,_e7),lastResults.length-1);refreshResult();};var onDocumentClick=function(e){if(e.target==searchInputField){return;}if(e.target==searchButton){return;}if(resultElement&&isDescendantOrSelf(resultElement,e.target)){return;}closeResult();};var onDocumentKeyup=function(e){if(e.keyCode==27){closeResult();}};addEvent(document,"click",onDocumentClick);addEvent(document,"keyup",onDocumentKeyup);config.macros.yourSearch={label:"yourSearch",prompt:"Gives access to the current/last YourSearch result",funcs:{},tests:{"true":function(){return true;},"false":function(){return false;},"found":function(){return lastResults&&lastResults.length>0;},"previewText":function(){return config.options.chkPreviewText;}}};config.macros.yourSearch.handler=function(_ea,_eb,_ec,_ed,_ee,_ef){if(_ec.length==0){return;}var _f0=_ec[0];var _f1=config.macros.yourSearch.funcs[_f0];if(_f1){_f1(_ea,_eb,_ec,_ed,_ee,_ef);}};config.macros.yourSearch.funcs.itemRange=function(_f2){if(lastResults){var _f3=Math.min(firstIndexOnPage+getItemsPerPage(),lastResults.length);var s="%0 - %1".format([firstIndexOnPage+1,_f3]);createTiddlyText(_f2,s);}};config.macros.yourSearch.funcs.count=function(_f5){if(lastSearchText){createTiddlyText(_f5,lastResults.length.toString());}};config.macros.yourSearch.funcs.query=function(_f6){if(lastResults){createTiddlyText(_f6,lastSearchText);}};config.macros.yourSearch.funcs.version=function(_f7){var t="YourSearch %0.%1.%2".format([version.extensions.YourSearchPlugin.major,version.extensions.YourSearchPlugin.minor,version.extensions.YourSearchPlugin.revision]);var e=createTiddlyElement(_f7,"a");e.setAttribute("href","http://tiddlywiki.abego-software.de/#YourSearchPlugin");e.innerHTML="<font color=\s"black\s" face=\s"Arial, Helvetica, sans-serif\s">"+t+"<font>";};config.macros.yourSearch.funcs.copyright=function(_fa){var e=createTiddlyElement(_fa,"a");e.setAttribute("href","http://tiddlywiki.abego-software.de");e.innerHTML="<font color=\s"black\s" face=\s"Arial, Helvetica, sans-serif\s">&copy; 2005-2006 <b><font color=\s"red\s">abego</font></b> Software<font>";};config.macros.yourSearch.funcs.linkButton=function(_fc,_fd,_fe,_ff,_100,_101){if(_fe<2){return;}var _102=_fe[1];var text=_fe<3?_102:_fe[2];var _104=_fe<4?text:_fe[3];var _105=_fe<5?null:_fe[4];var btn=createTiddlyButton(_fc,text,_104,closeResultAndDisplayTiddler,null,null,_105);btn.setAttribute("tiddlyLink",_102);};config.macros.yourSearch.funcs.closeButton=function(_107,_108,_109,_10a,_10b,_10c){var _10d=createTiddlyButton(_107,"close","Close the Search Results (Shortcut: ESC)",closeResult);};config.macros.yourSearch.funcs.openAllButton=function(_10e,_10f,_110,_111,_112,_113){if(!lastResults){return;}var n=lastResults.length;if(n==0){return;}var _115=n==1?"open tiddler":"open all %0 tiddlers".format([n]);var _116=createTiddlyButton(_10e,_115,"Open all found tiddlers (Shortcut: Alt-O)",openAllFoundTiddlers);_116.setAttribute("accessKey","O");};var onNaviButtonClick=function(e){if(!e){var e=window.event;}var _119=getIntAttribute(this,"page");setFirstIndexOnPage(_119*getItemsPerPage(),0);};config.macros.yourSearch.funcs.naviBar=function(_11a,_11b,_11c,_11d,_11e,_11f){if(!lastResults||lastResults.length==0){return;}var _120;var _121=Math.floor(firstIndexOnPage/getItemsPerPage());var _122=Math.floor((lastResults.length-1)/getItemsPerPage());if(_121>0){_120=createTiddlyButton(_11a,"Previous","Go to previous page (Shortcut: Alt-'<')",onNaviButtonClick,"prev");_120.setAttribute("page",(_121-1).toString());_120.setAttribute("accessKey","<");}for(var i=-maxPagesInNaviBar;i<maxPagesInNaviBar;i++){var _124=_121+i;if(_124<0){continue;}if(_124>_122){break;}var _125=(i+_121+1).toString();var _126=_124==_121?"currentPage":"otherPage";_120=createTiddlyButton(_11a,_125,"Go to page %0".format([_125]),onNaviButtonClick,_126);_120.setAttribute("page",(_124).toString());}if(_121<_122){_120=createTiddlyButton(_11a,"Next","Go to next page (Shortcut: Alt-'>')",onNaviButtonClick,"next");_120.setAttribute("page",(_121+1).toString());_120.setAttribute("accessKey",">");}};config.macros.yourSearch.funcs["if"]=function(_127,_128,_129,_12a,_12b,_12c){if(_129.length<2){return;}var _12d=_129[1];var _12e=(_12d=="not");if(_12e){if(_129.length<3){return;}_12d=_129[2];}var test=config.macros.yourSearch.tests[_12d];var _130=false;try{if(test){_130=test(_127,_128,_129,_12a,_12b,_12c)!=_12e;}else{_130=(!eval(_12d))==_12e;}}catch(ex){}if(!_130){_127.style.display="none";}};var createOptionWithRefresh=function(_131,_132,_133,_134){invokeMacro(_131,"option",_132,_133,_134);var elem=_131.lastChild;var _136=elem.onclick;elem.onclick=function(e){var _138=_136.apply(this,arguments);refreshResult();return _138;};return elem;};config.macros.yourSearch.funcs.chkPreviewText=function(_139,_13a,_13b,_13c,_13d,_13e){var _13f=_13b.slice(1).join(" ");var elem=createOptionWithRefresh(_139,"chkPreviewText",_13c,_13e);elem.setAttribute("accessKey","P");elem.title="Show text preview of found tiddlers (Shortcut: Alt-P)";return elem;};config.macros.foundTiddler={label:"foundTiddler",prompt:"Provides information on the tiddler currently processed on the YourSearch result page",funcs:{}};config.macros.foundTiddler.handler=function(_141,_142,_143,_144,_145,_146){if(!currentTiddler){return;}var name=_143[0];var func=config.macros.foundTiddler.funcs[name];if(func){func(_141,_142,_143,_144,_145,_146);}};var closeResultAndDisplayTiddler=function(e){closeResult();var _14a=this.getAttribute("tiddlyLink");if(_14a){var _14b=this.getAttribute("withHilite");var _14c=highlightHack;if(_14b&&_14b=="true"&&lastQuery){highlightHack=lastQuery.getMarkRegExp();}story.displayTiddler(this,_14a);highlightHack=_14c;}return (false);};var getShortCutNumber=function(){if(!currentTiddler){return -1;}if(indexInPage>=0&&indexInPage<=9){return indexInPage<9?(indexInPage+1):0;}else{return -1;}};config.macros.foundTiddler.funcs.title=function(_14d,_14e,_14f,_150,_151,_152){if(!currentTiddler){return;}var _153=getShortCutNumber();var _154=_153>=0?"Open tiddler (Shortcut: Alt-%0)".format([_153.toString()]):"Open tiddler";var btn=createTiddlyButton(_14d,null,_154,closeResultAndDisplayTiddler,null);btn.setAttribute("tiddlyLink",currentTiddler.title);btn.setAttribute("withHilite","true");createLimitedTextWithMarks(btn,currentTiddler.title,maxCharsInTitle);if(_153>=0){btn.setAttribute("accessKey",_153.toString());}};config.macros.foundTiddler.funcs.tags=function(_156,_157,_158,_159,_15a,_15b){if(!currentTiddler){return;}createLimitedTextWithMarks(_156,currentTiddler.getTags(),maxCharsInTags);};config.macros.foundTiddler.funcs.text=function(_15c,_15d,_15e,_15f,_160,_161){if(!currentTiddler){return;}createLimitedTextWithMarks(_15c,removeTextDecoration(currentTiddler.text),maxCharsInText);};config.macros.foundTiddler.funcs.number=function(_162,_163,_164,_165,_166,_167){var _168=getShortCutNumber();if(_168>=0){var text="%0)".format([_168.toString()]);createTiddlyElement(_162,"span",null,"shortcutNumber",text);}};function scrollToAnchor(name){return false;}if(config.options.chkUseYourSearch==undefined){config.options.chkUseYourSearch=true;}if(config.options.chkPreviewText==undefined){config.options.chkPreviewText=true;}if(config.options.chkSearchAsYouType==undefined){config.options.chkSearchAsYouType=true;}if(config.options.chkSearchInTitle==undefined){config.options.chkSearchInTitle=true;}if(config.options.chkSearchInText==undefined){config.options.chkSearchInText=true;}if(config.options.chkSearchInTags==undefined){config.options.chkSearchInTags=true;}if(config.options.txtItemsPerPage==undefined){config.options.txtItemsPerPage=itemsPerPageDefault;}if(config.options.txtItemsPerPageWithPreview==undefined){config.options.txtItemsPerPageWithPreview=itemsPerPageWithPreviewDefault;}config.shadowTiddlers.AdvancedOptions+="\sn<<option chkUseYourSearch>> Use 'Your Search' //([[more options|YourSearch Options]])//";config.shadowTiddlers["YourSearch Introduction"]="!About YourSearch\sn"+"\sn"+"YourSearch gives you a bunch of new features to simplify and speed up your daily searches in TiddlyWiki. It seamlessly integrates into the standard TiddlyWiki search: just start typing into the 'search' field and explore!\sn"+"\sn"+"''May the '~Alt-F' be with you.''\sn"+"\sn"+"\sn"+"!Features\sn"+"* YourSearch searches for tiddlers that match your query ''as you type'' into the 'search' field. It presents a list of the ''\s"Top Ten\s"'' tiddlers in a ''popup-like window'': the ''[[YourSearch Result]]''. The tiddlers currently displayed in your TiddlyWiki are not affected.\sn"+"* Using ''~TiddlerRank technology'' the [[YourSearch Result]] lists the ''most interesting tiddlers first''.\sn"+"* Through ''Filtered Search'' and ''Boolean Search'' you can easily refining your search, like excluding words or searching for multiple words. This way less tiddlers are displayed in the [[YourSearch Result]] and you can faster scan the result for the tiddler you are looking for.\sn"+"* The [[YourSearch Result]] lists the found tiddlers ''page-wise'', e.g. 10 per page. Use the ''Result Page Navigation Bar'' to navigate between pages if the result does not fit on one page.\sn"+"* The [[YourSearch Result]] states the ''total number of found tiddlers''. This way you can quickly decide if you want to browse the result list or if you want to refine your search first to shorten the result list.\sn"+"* Beside the ''title of the found tiddlers'' the [[YourSearch Result]] also ''displays tags'' and ''tiddler text previews''. The ''tiddler text preview'' is an extract of the tiddler's content, showing the most interesting parts related to your query (e.g. the texts around the words you are looking for).\sn"+"* The words you are looking for are hilited in the titles, tags and text previews of the [[YourSearch Result]].\sn"+"* If you are not interested in the tiddler text previews but prefer to get longer lists of tiddlers on one result page you may ''switch of the text preview''.\sn"+"* If the [[YourSearch Result]] contains the tiddler you are looking for you can just ''click its title to display'' it in your TiddlyWiki. Alternatively you may also ''open all found tiddlers'' at once. \sn"+"* Use [[YourSearch Options]] to customize YourSearch to your needs. E.g. depending on the size of your screen you may change the number of tiddlers displayed in the [[YourSearch Result]]. In the [[YourSearch Options]] and the AdvancedOptions you may also switch off YourSearch in case you temporarily want to use the standard search.\sn"+"* For the most frequently actions ''access keys'' are defined so you can perform your search without using the mouse.\sn"+"\sn";config.shadowTiddlers["YourSearch Help"]="<<tiddler [[YourSearch Introduction]]>>"+"\sn"+"!Filtered Search<html><a name='Filtered'/></html>\sn"+"Using the Filtered Search you can restrict your search to certain parts of a tiddler, e.g only search the tags or only the titles.\sn"+"|!What you want|!What you type|!Example|\sn"+"|Search ''titles only''|start word with ''!''|{{{!jonny}}}|\sn"+"|Search ''contents only''|start word with ''%''|{{{%football}}}|\sn"+"|Search ''tags only''|start word with ''#''|{{{#Plugin}}}|\sn"+"\sn"+"You may use more than one filter for a word. E.g. {{{!#Plugin}}} finds tiddlers containing \s"Plugin\s" either in the title or in the tags (but does not look for \s"Plugin\s" in the content).\sn"+"\sn"+"!Boolean Search<html><a name='Boolean'/></html>\sn"+"The Boolean Search is useful when searching for multiple words.\sn"+"|!What you want|!What you type|!Example|\sn"+"|''All words'' must exist|List of words|{{{jonny jeremy}}}|\sn"+"|''At least one word'' must exist|Separate words by ''or''|{{{jonny or jeremy}}}|\sn"+"|A word ''must not exist''|Start word with ''-''|{{{-jonny}}}|\sn"+"\sn"+"''Note:'' When you specify two words, separated with a space, YourSearch finds all tiddlers that contain both words, but not necessarily next to each other. If you want to find a sequence of word, e.g. '{{{John Brown}}}', you need to put the words into quotes. I.e. you type: {{{\s"john brown\s"}}}.\sn"+"\sn"+"!'Exact Word' Search<html><a name='Exact'/></html>\sn"+"By default a search result all matches that 'contain' the searched text. \sn"+" E.g. if you search for 'Task' you will get all tiddlers containing 'Task', but also 'CompletedTask', 'TaskForce' etc.\sn"+"\sn"+"If you only want to get the tiddlers that contain 'exactly the word' you need to prefix it with a '='. E.g. typing '=Task' will the tiddlers that contain the word 'Task', ignoring words that just contain 'Task' as a substring.\sn"+"\sn"+"!Combined Search<html><a name='Combined'/></html>\sn"+"You are free to combine the various search options. \sn"+"\sn"+"''Examples''\sn"+"|!What you type|!Result|\sn"+"|{{{!jonny !jeremy -%football}}}| all tiddlers with both {{{jonny}}} and {{{jeremy}}} in its titles, but no {{{football}}} in content.|\sn"+"|{{{#=Task}}}|All tiddlers tagged with 'Task' (the exact word). Tags named 'CompletedTask', 'TaskForce' etc. are not considered.|\sn"+"\sn"+"!~CaseSensitiveSearch and ~RegExpSearch<html><a name='Case'/></html>\sn"+"The standard search options ~CaseSensitiveSearch and ~RegExpSearch are fully supported by YourSearch. However when ''~RegExpSearch'' is on Filtered and Boolean Search are disabled.\sn"+"\sn"+"!Access Keys<html><a name='Access'/></html>\sn"+"You are encouraged to use the access keys (also called \s"shortcut\s" keys) for the most frequently used operations. For quick reference these shortcuts are also mentioned in the tooltip for the various buttons etc.\sn"+"\sn"+"|!Key|!Operation|\sn"+"|{{{Alt-F}}}|''The most important keystroke'': It moves the cursor to the search input field so you can directly start typing your query. Pressing {{{Alt-F}}} will also display the previous search result. This way you can quickly display multiple tiddlers using \s"Press {{{Alt-F}}}. Select tiddler.\s" sequences.|\sn"+"|{{{ESC}}}|Closes the [[YourSearch Result]]. When the [[YourSearch Result]] is already closed and the cursor is in the search input field the field's content is cleared so you start a new query.|\sn"+"|{{{Alt-1}}}, {{{Alt-2}}},... |Pressing these keys opens the first, second etc. tiddler from the result list.|\sn"+"|{{{Alt-O}}}|Opens all found tiddlers.|\sn"+"|{{{Alt-P}}}|Toggles the 'Preview Text' mode.|\sn"+"|{{{Alt-'<'}}}, {{{Alt-'>'}}}|Displays the previous or next page in the [[YourSearch Result]].|\sn"+"|{{{Return}}}|When you have turned off the 'as you type' search mode pressing the {{{Return}}} key actually starts the search (as does pressing the 'search' button).|\sn"+"\sn";config.shadowTiddlers["YourSearch Options"]="|>|!YourSearch Options|\sn"+"|>|<<option chkUseYourSearch>> Use 'Your Search'|\sn"+"|!|<<option chkPreviewText>> Show Text Preview|\sn"+"|!|<<option chkSearchAsYouType>> 'Search As You Type' Mode (No RETURN required to start search)|\sn"+"|!|Default Search Filter:<<option chkSearchInTitle>>Titles ('!') <<option chkSearchInText>>Texts ('%') <<option chkSearchInTags>>Tags ('#') <html><br><font size=\s"-2\s">The parts of a tiddlers that are searched when you don't explicitly specify a filter in the search text (using a '!', '%' or '#' prefix).</font></html>|\sn"+"|!|Number of items on search result page: <<option txtItemsPerPage>>|\sn"+"|!|Number of items on search result page with preview text: <<option txtItemsPerPageWithPreview>>|\sn";config.shadowTiddlers["YourSearchStyleSheet"]="/***\sn"+"!~YourSearchResult Stylesheet\sn"+"***/\sn"+"/*{{{*/\sn"+".yourSearchResult {\sn"+"\stposition: absolute;\sn"+"\stwidth: 800px;\sn"+"\sn"+"\stpadding: 0.2em;\sn"+"\stlist-style: none;\sn"+"\stmargin: 0;\sn"+"\sn"+"\stbackground: White;\sn"+"\stborder: 1px solid DarkGray;\sn"+"}\sn"+"\sn"+"/*}}}*/\sn"+"/***\sn"+"!!Summary Section\sn"+"***/\sn"+"/*{{{*/\sn"+".yourSearchResult .summary {\sn"+"\stborder-bottom-width: thin;\sn"+"\stborder-bottom-style: solid;\sn"+"\stborder-bottom-color: #999999;\sn"+"\stpadding-bottom: 4px;\sn"+"}\sn"+"\sn"+".yourSearchRange, .yourSearchCount, .yourSearchQuery {\sn"+"\stfont-weight: bold;\sn"+"}\sn"+"\sn"+".yourSearchResult .summary .button {\sn"+"\stfont-size: 10px;\sn"+"\sn"+"\stpadding-left: 0.3em;\sn"+"\stpadding-right: 0.3em;\sn"+"}\sn"+"\sn"+".yourSearchResult .summary .chkBoxLabel {\sn"+"\stfont-size: 10px;\sn"+"\sn"+"\stpadding-right: 0.3em;\sn"+"}\sn"+"\sn"+"/*}}}*/\sn"+"/***\sn"+"!!Items Area\sn"+"***/\sn"+"/*{{{*/\sn"+".yourSearchResult .marked {\sn"+"\stbackground: none;\sn"+"\stfont-weight: bold;\sn"+"}\sn"+"\sn"+".yourSearchItem {\sn"+"\stmargin-top: 2px;\sn"+"}\sn"+"\sn"+".yourSearchNumber {\sn"+"\stcolor: #808080;\sn"+"}\sn"+"\sn"+"\sn"+".yourSearchTags {\sn"+"\stcolor: #008000;\sn"+"}\sn"+"\sn"+".yourSearchText {\sn"+"\stcolor: #808080;\sn"+"\stmargin-bottom: 6px;\sn"+"}\sn"+"\sn"+"/*}}}*/\sn"+"/***\sn"+"!!Footer\sn"+"***/\sn"+"/*{{{*/\sn"+".yourSearchFooter {\sn"+"\stmargin-top: 8px;\sn"+"\stborder-top-width: thin;\sn"+"\stborder-top-style: solid;\sn"+"\stborder-top-color: #999999;\sn"+"}\sn"+"\sn"+".yourSearchFooter a:hover{\sn"+"\stbackground: none;\sn"+"\stcolor: none;\sn"+"}\sn"+"/*}}}*/\sn"+"/***\sn"+"!!Navigation Bar\sn"+"***/\sn"+"/*{{{*/\sn"+".yourSearchNaviBar a {\sn"+"\stfont-size: 16px;\sn"+"\stmargin-left: 4px;\sn"+"\stmargin-right: 4px;\sn"+"\stcolor: black;\sn"+"\sttext-decoration: underline;\sn"+"}\sn"+"\sn"+".yourSearchNaviBar a:hover {\sn"+"\stbackground-color: none;\sn"+"}\sn"+"\sn"+".yourSearchNaviBar .prev {\sn"+"\stfont-weight: bold;\sn"+"\stcolor: blue;\sn"+"}\sn"+"\sn"+".yourSearchNaviBar .currentPage {\sn"+"\stcolor: #FF0000;\sn"+"\stfont-weight: bold;\sn"+"\sttext-decoration: none;\sn"+"}\sn"+"\sn"+".yourSearchNaviBar .next {\sn"+"\stfont-weight: bold;\sn"+"\stcolor: blue;\sn"+"}\sn"+"/*}}}*/\sn";config.shadowTiddlers["YourSearchResultTemplate"]="<!--\sn"+"{{{\sn"+"-->\sn"+"<span macro=\s"yourSearch if found\s">\sn"+"<!-- The Summary Header ============================================ -->\sn"+"<table class=\s"summary\s" border=\s"0\s" width=\s"100%\s" cellspacing=\s"0\s" cellpadding=\s"0\s"><tbody>\sn"+" <tr>\sn"+"\st<td align=\s"left\s">\sn"+"\st\stYourSearch Result <span class=\s"yourSearchRange\s" macro=\s"yourSearch itemRange\s"></span>\sn"+"\st\st&nbsp;of&nbsp;<span class=\s"yourSearchCount\s" macro=\s"yourSearch count\s"></span>\sn"+"\st\stfor&nbsp;<span class=\s"yourSearchQuery\s" macro=\s"yourSearch query\s"></span>\sn"+"\st</td>\sn"+"\st<td class=\s"yourSearchButtons\s" align=\s"right\s">\sn"+"\st\st<span macro=\s"yourSearch chkPreviewText\s"></span><span class=\s"chkBoxLabel\s">preview text</span>\sn"+"\st\st<span macro=\s"yourSearch openAllButton\s"></span>\sn"+"\st\st<span macro=\s"yourSearch linkButton 'YourSearch Options' options 'Configure YourSearch'\s"></span>\sn"+"\st\st<span macro=\s"yourSearch linkButton 'YourSearch Help' help 'Get help how to use YourSearch'\s"></span>\sn"+"\st\st<span macro=\s"yourSearch closeButton\s"></span>\sn"+"\st</td>\sn"+" </tr>\sn"+"</tbody></table>\sn"+"\sn"+"<!-- The List of Found Tiddlers ============================================ -->\sn"+"<div id=\s"yourSearchResultItems\s" itemsPerPage=\s"25\s" itemsPerPageWithPreview=\s"10\s"></div>\sn"+"\sn"+"<!-- The Footer (with the Navigation) ============================================ -->\sn"+"<table class=\s"yourSearchFooter\s" border=\s"0\s" width=\s"100%\s" cellspacing=\s"0\s" cellpadding=\s"0\s"><tbody>\sn"+" <tr>\sn"+"\st<td align=\s"left\s">\sn"+"\st\stResult page: <span class=\s"yourSearchNaviBar\s" macro=\s"yourSearch naviBar\s"></span>\sn"+"\st</td>\sn"+"\st<td align=\s"right\s"><span macro=\s"yourSearch version\s"></span>, <span macro=\s"yourSearch copyright\s"></span>\sn"+"\st</td>\sn"+" </tr>\sn"+"</tbody></table>\sn"+"<!-- end of the 'tiddlers found' case =========================================== -->\sn"+"</span>\sn"+"\sn"+"\sn"+"<!-- The \s"No tiddlers found\s" case =========================================== -->\sn"+"<span macro=\s"yourSearch if not found\s">\sn"+"<table class=\s"summary\s" border=\s"0\s" width=\s"100%\s" cellspacing=\s"0\s" cellpadding=\s"0\s"><tbody>\sn"+" <tr>\sn"+"\st<td align=\s"left\s">\sn"+"\st\stYourSearch Result: No tiddlers found for <span class=\s"yourSearchQuery\s" macro=\s"yourSearch query\s"></span>.\sn"+"\st</td>\sn"+"\st<td class=\s"yourSearchButtons\s" align=\s"right\s">\sn"+"\st\st<span macro=\s"yourSearch linkButton 'YourSearch Options' options 'Configure YourSearch'\s"></span>\sn"+"\st\st<span macro=\s"yourSearch linkButton 'YourSearch Help' help 'Get help how to use YourSearch'\s"></span>\sn"+"\st\st<span macro=\s"yourSearch closeButton\s"></span>\sn"+"\st</td>\sn"+" </tr>\sn"+"</tbody></table>\sn"+"</span>\sn"+"\sn"+"\sn"+"<!--\sn"+"}}}\sn"+"-->\sn";config.shadowTiddlers["YourSearchItemTemplate"]="<!--\sn"+"{{{\sn"+"-->\sn"+"<span class='yourSearchNumber' macro='foundTiddler number'></span>\sn"+"<span class='yourSearchTitle' macro='foundTiddler title'/></span>&nbsp;-&nbsp;\sn"+"<span class='yourSearchTags' macro='foundTiddler tags'/></span>\sn"+"<span macro=\s"yourSearch if previewText\s"><div class='yourSearchText' macro='foundTiddler text'/></div></span>\sn"+"<!--\sn"+"}}}\sn"+"-->";config.shadowTiddlers["YourSearch"]="<<tiddler [[YourSearch Help]]>>";config.shadowTiddlers["YourSearch Result"]="The popup-like window displaying the result of a YourSearch query.";setStylesheet(store.getTiddlerText("YourSearchStyleSheet"),"yourSearch");var origMacros_search_handler=config.macros.search.handler;config.macros.search.handler=myMacroSearchHandler;var ownsOverwrittenFunctions=function(){var _16b=(config.macros.search.handler==myMacroSearchHandler);return _16b;};var checkForOtherHijacker=function(){if(!ownsOverwrittenFunctions()){alert("Message from YourSearchPlugin:\sn\sn\sn"+"Another plugin has disabled the 'Your Search' features.\sn\sn\sn"+"You may disable the other plugin or change the load order of \sn"+"the plugins (by changing the names of the tiddlers)\sn"+"to enable the 'Your Search' features.");}};setTimeout(checkForOtherHijacker,5000);abego.YourSearch.getStandardRankFunction=function(){return standardRankFunction;};abego.YourSearch.getRankFunction=function(){return abego.YourSearch.getStandardRankFunction();};abego.YourSearch.getCurrentTiddler=function(){return currentTiddler;};}\n/***\n%/\n!Licence and Copyright\nCopyright (c) abego Software ~GmbH, 2005-2006 ([[www.abego-software.de|http://www.abego-software.de]])\n\nRedistribution and use in source and binary forms, with or without modification,\nare permitted provided that the following conditions are met:\n\nRedistributions of source code must retain the above copyright notice, this\nlist of conditions and the following disclaimer.\n\nRedistributions in binary form must reproduce the above copyright notice, this\nlist of conditions and the following disclaimer in the documentation and/or other\nmaterials provided with the distribution.\n\nNeither the name of abego Software nor the names of its contributors may be\nused to endorse or promote products derived from this software without specific\nprior written permission.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY\nEXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES\nOF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT\nSHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,\nINCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED\nTO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR\nBUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN\nCONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN\nANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH\nDAMAGE.\n***/\n\n
/***\n|Macro name|''alias''|h\n|''Source:''|http://www.TiddlyTools.com/#AliasPlugin|\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\nCreate text-substitution macros that define abbreviations and other "aliases", and then embed them in the rest of your tiddler content to quickly insert common terms, phrases and links without a lot of repetitive typing.\n\n!!!!!Usage\n<<<\nFirst, decide upon a suitable "alias" for the text to be substituted. This is usually a short keyword or other abbreviated term that is easily input with just a few keystrokes. You can use any alias you like, but don't include any spaces in the alias name, since it will be used as the name of the 'alias macro' that is created, and macro names cannot contain spaces.\n\n//Note: If you use an alias name that ''does'' contain spaces, they will be automatically replaced with underscores ("_"), so that the resulting alias name will still be a valid macro name//\n\nTo create alias definitions, embed <html>&lt;&lt;alias <i>newname "text to display"</i>&gt;&gt;</html> macros in a tiddler. These macros don't actually produce any visible output, but simply define the alias macros that you want to use in your document, and thus they can be safely added to practically any tiddler without producing a change in that tiddler's appearance.\n\nIn order to ensure that your aliases are defined and available for use throughout your document, you should add your definitions to a tiddler that you are certain will be displayed when your TW is first loaded, such as MainMenu or SiteTitle (or, any tiddler listed in DefaultTiddlers).\n<<<\n!!!!!Examples\n<<<\n<<alias>> {{{<<alias>>}}}\nmissing alias name: fail safe, do nothing\n\n<<alias alias1>> {{{<<alias alias1>>}}}\nmissing text params, default to text=name (e.g., "<<alias1>>")\n\n<<alias alias2 simple multi-word text substitution>> {{{<<alias alias2 simple multi-word text substitution>>}}}\n<<alias2>>\n\n<<alias "alias3 with spaces" "spaces in aliasname converted to _">> {{{<<alias "alias3 with spaces" "spaces in aliasname converted to _ ">>}}}\n<<alias3_with_spaces>>\n\n<<alias alias4 "multi-line \ntext\nsubstitution">> {{{<<alias alias4 "multi-line\ntext\nsubstitution">>}}}\n<<alias4>>\n<<<\n!!!!!Installation\n<<<\nimport (or copy/paste) the following tiddlers into your document:\n''AliasPlugin'' (tagged with <<tag systemConfig>>)\n^^documentation and javascript for this plugin^^\n<<<\n!!!!!Revision History\n<<<\n''2005.10.09 [1.0.3]''\ncombined documentation and code into a single tiddler\n''2005.08.12 [1.0.0]''\ninitial release\n<<<\n!!!!!Credits\n<<<\nThis feature was developed by EricShulman from [[ELS Design Studios|http:/www.elsdesign.com]]\n<<<\n!!!!!Code\n***/\n//{{{\nversion.extensions.alias= {major: 1, minor: 0, revision: 3, date: new Date(2005,10,9)};\nconfig.macros.alias= { };\nconfig.macros.alias.handler = function(place,macroName,params) {\n var alias=params.shift(); if (!alias) return; alias=alias.replace(/ /g,"_"); // don't allow spaces in alias\n if (config.macros[alias]==undefined) // create new macro (as needed)\n { \n config.macros[alias] = { };\n config.macros[alias].handler =\n function (place,macroName,params)\n { wikify(config.macros[macroName].text,place,null,null); }\n }\n config.macros[alias].text = params[0]?params.join(' '):alias; // set alias text\n}\n//}}}\n
/***\n|Macro:|''allTagsExcept''|h\n|Author:|[[Clint Checketts]]|\n|Version:|1.0 Sept 8, 2005|\n|Usage:|{{{<< allTagsExcept systemConfig excludeLists systemTiddlers >>}}} This will show all tags but those listed (e.g. systemConfig and systemTiddlers|\n\n<<allTagsExcept systemConfig excludeLists systemTiddlers >>\n***/\n//{{{\nversion.extensions.allTagsExcept = {major: 0, minor: 1, revision: 0, date: new Date(2005,8,15)};\nconfig.macros.allTagsExcept = {tooltip: "Show tiddlers tagged with '%0'",noTags: "There are no tags to display"};\n\nconfig.macros.allTagsExcept.handler = function(place,macroName,params)\n{\n var tags = store.getTags();\n var theTagList = createTiddlyElement(place,"ul",null,null,null);\n if(tags.length == 0)\n createTiddlyElement(theTagList,"li",null,"listTitle",this.noTags);\n for (var t=0; t<tags.length; t++) {\n var includeTag = true;\n for (var p=0;p<params.length; p++) if (tags[t][0] == params[p]) includeTag = false;\n if (includeTag){\n var theListItem =createTiddlyElement(theTagList,"li",null,null,null);\n var theTag = createTiddlyButton(theListItem,tags[t][0] + " (" + tags[t][1] + ")",this.tooltip.format([tags[t][0]]),onClickTag);\n theTag.setAttribute("tag",tags[t][0]);\n }\n }\n}\n//}}}
/***\n| Name:|''dropTagging''|h\n| Created by:|[[Saq Imtiaz]]|\n| Location:|http://lewcid.googlepages.com/lewcid.html|\n| Version:|0.1 (06-Apr-2006)|\n| Requires:|~TW2.07|\n\n!About\n*provides a drop down list of tiddlers tagged with the specified tag, a replacement for the core tagging macro.\n\n!Demonstration\n* <<dropTagging >>\n''I recommend using either TaggerPlugin or monkeyTagger, with dropTags and dropTagging in the toolbar:''\n\n\n!Usage\n{{{<<dropTagging>>}}} for tiddlers tagged by current tiddler/tag\n{{{<<dropTagging 'Saq'>>}}} for tiddlers tagged by the tag 'Saq' <<dropTagging 'Saq'>>\n{{{<<dropTagging 'Saq' 'custom label'>>}}} for tiddlers tagged by the tag 'Saq' with a custom label. <<dropTagging 'Saq' 'custom label'>>\n\n!Installation:\n*Copy this tiddler to your TW with the systemConfig tag\n* copy the following to your ViewTemplate:\n#either {{{<div class='tagging' macro='dropTagging'></div>}}} to add next to or replace tagging macro, or\n#{{{<div class='toolbar' >\n<span style="padding-right:1.75em;" macro='dropTagging''></span>\n<span macro='toolbar -closeTiddler closeOthers +editTiddler permalink references jump'></span>\n</div>}}}(adjust padding to taste)\n\n!To Do\n*tweak popup css to optimize placement and colors.\n*''optimize code to use core onClickTag function, can cut code size by half!''\n\n!Code\n***/\n//{{{\nconfig.macros.dropTagging={};\nconfig.macros.dropTagging.dropdownchar = (document.all?"â–¼":"â–¾"); // the fat one is the only one that works in IE\nconfig.macros.dropTagging.handler = function(place,macroName,params,wikifier,paramString,tiddler)\n{\n var arrow=': '+ config.macros.dropTagging.dropdownchar;\n if(params[0] && store.tiddlerExists(params[0]))\n tiddler = store.getTiddler(params[0]);\n\n\n\n var droptagginglabel= (params[1] && params[1] !='.')? params[1]: 'tagging'+arrow;\n var droptaggingtooltip="tiddlers tagged with '"+tiddler.title+"'";\n \n if(params[0] && store.tiddlerExists(params[0]))\n tiddler = store.getTiddler(params[0]);\n var tagged = store.getTaggedTiddlers(tiddler.title);\n\n if(tagged.length==0)\n return false; \n \n var droptagging = function(e)\n { if (!e) var e = window.event;\n var popup = Popup.create(this);\n \n\n\n for(var t=0; t<tagged.length; t++)\n createTiddlyLink(createTiddlyElement(popup,"li"),tagged[t].title,true);\n\n Popup.show(popup,false);\n e.cancelBubble = true;\n if (e.stopPropagation)\n e.stopPropagation();\n return(false);\n };\n \nvar createdropperButton = function(place){\nvar sp = createTiddlyElement(place,"span",null,"taggingdropbutton");\nvar theDropDownBtn = createTiddlyButton(sp,droptagginglabel,droptaggingtooltip,droptagging);\n };\ncreatedropperButton(place);\n};\n\nsetStylesheet(\n ".toolbar .taggingdropbutton {margin-right:0em; border:0px solid #eee; padding:0px; padding-right:0px; padding-left:0px; }\sn"+\n ".taggingdropbutton a.button {padding:2px; padding-left:2px; padding-right:2px;}\sn"+\n// ".taggingdropbutton {font-size:150%;}\sn"+\n".popup .highlight{background: #fe8; color:#000;}\sn"+\n "",\n"DropTaggingStyles");\n\n//}}}
/***\n|''Macro name:''|''dropTags''|h\n|''Version:''|0.5 (12-May-2006)|\n|''Created by:''|[[Saq Imtiaz]]|\n|''Location:''|http://lewcid.googlepages.com/lewcid.html#DropTagsMacro|\n|''Description:''|provides a drop down list of tags in the current tiddler,<<br>> a replacement for the core tags macro.|\n|''Documentation:''|DropTagsMacroDocumentation |\n|''Source Code:''|[[DropTagsMacroSource|DropTagsMacroDocumentation]] |\n|''Requires:''|~TW2.07|\n\n***/\n// /%\nconfig.macros.dropTags={};config.macros.dropTags.dropdownchar=(document.all?"â–¼":"â–¾");config.macros.dropTags.handler=function(_1,_2,_3,_4,_5,_6){var _7=config.macros.dropTags.dropdownchar;var _8=(_3[0]&&_3[0]!=".")?_3[0]+_7:"tags"+_7;var _9="current tags for this tiddler";var _a=function(e){if(!e){var e=window.event;}var _d=Popup.create(this);var _e=config.views.wikified.tag;if(_6.tags.length==0){createTiddlyElement(_d,"li",null,"listTitle",_e.labelNoTags);}else{for(var t=0;t<_6.tags.length;t++){createTagButton(createTiddlyElement(_d,"li"),_6.tags[t],_6.title);}}if(version.extensions.IntelliTaggerPlugin){createTiddlyElement(createTiddlyElement(_d,"li"),"hr");abego.IntelliTagger.createEditTagsButton(_6,createTiddlyElement(_d,"li"),"[IntelliEdit]","Edit tags with Intellitagger");}Popup.show(_d,false);e.cancelBubble=true;if(e.stopPropagation){e.stopPropagation();}return (false);};createTiddlyButton(_1,_8,_8,_a,"button","dropTagBtn");};setStylesheet(".popup .highlight{background: #fe8; color:#000;}\sn"+"#nestedtagger {background:#2E5ADF; border: 1px solid #0331BF;}\sn"+"","DropTagsStyles");if(!config.macros.tagger){window.onClickTag=function(e){if(!e){var e=window.event;}var _12=resolveTarget(e);var _13=(!isNested(_12));if((Popup.stack.length>1)&&(_13==true)){Popup.removeFrom(1);}else{if(Popup.stack.length>0&&_13==false){Popup.removeFrom(0);}}var _14=(_13==false)?"popup":"nestedtagger";var _15=createTiddlyElement(document.body,"ol",_14,"popup",null);Popup.stack.push({root:this,popup:_15});var tag=this.getAttribute("tag");var _17=this.getAttribute("tiddler");if(_15&&tag){var _18=store.getTaggedTiddlers(tag);var _19=[];var li,r;for(r=0;r<_18.length;r++){if(_18[r].title!=_17){_19.push(_18[r].title);}}var _1b=config.views.wikified.tag;if(_19.length>0){var _1c=createTiddlyButton(createTiddlyElement(_15,"li"),_1b.openAllText.format([tag]),_1b.openAllTooltip,onClickTagOpenAll);_1c.setAttribute("tag",tag);createTiddlyElement(createTiddlyElement(_15,"li"),"hr");for(r=0;r<_19.length;r++){createTiddlyLink(createTiddlyElement(_15,"li"),_19[r],true);}}else{createTiddlyText(createTiddlyElement(_15,"li",null,"disabled"),_1b.popupNone.format([tag]));}createTiddlyElement(createTiddlyElement(_15,"li"),"hr");var h=createTiddlyLink(createTiddlyElement(_15,"li"),tag,false);createTiddlyText(h,_1b.openTag.format([tag]));}Popup.show(_15,false);e.cancelBubble=true;if(e.stopPropagation){e.stopPropagation();}return (false);};}if(!window.isNested){window.isNested=function(e){while(e!=null){var _1f=document.getElementById("contentWrapper");if(_1f==e){return true;}e=e.parentNode;}return false;};};config.shadowTiddlers.DropTagsMacroDocumentation="The documentation is available [[here.|http://lewcid.googlepages.com/lewcid.html#DropTagsMacroDocumentation]]";config.shadowTiddlers.DropTagsMacroSource="The documentation is available [[here.|http://lewcid.googlepages.com/lewcid.html#DropTagsMacroDocumentation]]";\n// %/
/***\n|Documentation|''dropTags plugin macro documentation''|h\n|Macro name|''dropTags''|\n|Version|0.5 (12-May-2006)|\n|Created by|[[Saq Imtiaz]]|\n|Location|http://lewcid.googlepages.com/lewcid.html#DropTagsMacro|\n|Description|provides a drop down list of tags in the current tiddler,<<br>> a replacement for the core tags macro.|\n|Requires:|~TW2.07|\n\n!About\n*provides a drop down list of tags in the current tiddler, a replacement for the core tags macro.\n\n''I recommend using either TaggerPlugin or monkeyTagger, with dropTags and dropTagging in the toolbar:''\n\n\n!Usage\n{{{<<dropTags>>}}} for <<dropTags>>\nor {{{<<dropTags 'custom label'>>}}} for <<dropTags 'custom label'>>\n\n!Installation:\n*Copy this tiddler to your TW with the systemConfig tag\n* copy the following to your ViewTemplate:\n#either {{{<div class='tagged' macro='dropTags'></div>}}} to add to next to the tags macro in the viewer area, or\n#{{{<div class='toolbar' >\n<span style="padding-right:8.75em;" macro='dropTags "current tags: "+config.macros.dropTags.dropdownchar}}'></span>\n<span macro='toolbar -closeTiddler closeOthers +editTiddler permalink references jump'></span>\n</div>}}}\n\n\n!History\n*May 12th, version 0.5, fixed some nesting bugs, added support for IntellitaggerPlugin.\n*May 3rd, version 0.41, made compatible with CustomPopups.\n\n!Source Code\n***/\n//{{{\nconfig.macros.dropTags={};\nconfig.macros.dropTags.dropdownchar = (document.all?"â–¼":"â–¾"); // the fat one is the only one that works in IE\nconfig.macros.dropTags.handler = function(place,macroName,params,wikifier,paramString,tiddler)\n{\n var arrow=config.macros.dropTags.dropdownchar;\n var droptaglabel= (params[0] && params[0] !='.')? params[0]+arrow: 'tags'+arrow;\n var droptagtooltip="current tags for this tiddler";\n\n var droptag = function(e){\n if (!e) var e = window.event;\n var popup = Popup.create(this);\n var lingo = config.views.wikified.tag;\n if (tiddler.tags.length==0)\n createTiddlyElement(popup,"li",null,"listTitle",lingo.labelNoTags);\n else\n for(var t=0; t<tiddler.tags.length; t++)\n {createTagButton(createTiddlyElement(popup,"li"),tiddler.tags[t],tiddler.title);}\n if (version.extensions.IntelliTaggerPlugin)\n {createTiddlyElement(createTiddlyElement(popup,"li"),"hr");\n abego.IntelliTagger.createEditTagsButton(tiddler, createTiddlyElement(popup,"li"),"[IntelliEdit]","Edit tags with Intellitagger");}\n Popup.show(popup,false);\n e.cancelBubble = true;\n if (e.stopPropagation)\n e.stopPropagation();\n return(false);\n };\n createTiddlyButton(place,droptaglabel,droptaglabel,droptag,"button","dropTagBtn");\n};\n\nsetStylesheet(\n".popup .highlight{background: #fe8; color:#000;}\sn"+\n"#nestedtagger {background:#2E5ADF; border: 1px solid #0331BF;}\sn"+\n "",\n"DropTagsStyles");\n\nif (!config.macros.tagger)\n window.onClickTag=function(e){\n if (!e) var e = window.event;\n var theTarget = resolveTarget(e);\n\n var nested = (!isNested(theTarget));\n if ((Popup.stack.length > 1)&&(nested==true)) {Popup.removeFrom(1);}\n else if(Popup.stack.length > 0 && nested==false) {Popup.removeFrom(0);};\n\n var theId = (nested==false)? "popup" : "nestedtagger";\n var popup = createTiddlyElement(document.body,"ol",theId,"popup",null);\n Popup.stack.push({root: this, popup: popup});\n\n var tag = this.getAttribute("tag");\n var title = this.getAttribute("tiddler");\n if(popup && tag)\n {\n var tagged = store.getTaggedTiddlers(tag);\n var titles = [];\n var li,r;\n for(r=0;r<tagged.length;r++)\n if(tagged[r].title != title)\n titles.push(tagged[r].title);\n var lingo = config.views.wikified.tag;\n if(titles.length > 0)\n {\n var openAll = createTiddlyButton(createTiddlyElement(popup,"li"),lingo.openAllText.format([tag]),lingo.openAllTooltip,onClickTagOpenAll);\n openAll.setAttribute("tag",tag);\n createTiddlyElement(createTiddlyElement(popup,"li"),"hr");\n for(r=0; r<titles.length; r++)\n {\n createTiddlyLink(createTiddlyElement(popup,"li"),titles[r],true);\n }\n }\n else\n createTiddlyText(createTiddlyElement(popup,"li",null,"disabled"),lingo.popupNone.format([tag]));\n createTiddlyElement(createTiddlyElement(popup,"li"),"hr");\n var h = createTiddlyLink(createTiddlyElement(popup,"li"),tag,false);\n createTiddlyText(h,lingo.openTag.format([tag]));\n }\n Popup.show(popup,false);\n e.cancelBubble = true;\n if (e.stopPropagation) e.stopPropagation();\n return(false);\n }\n\nif (!window.isNested)\n window.isNested = function(e) {\n while (e != null) {\n var contentWrapper = document.getElementById("contentWrapper");\n if (contentWrapper == e) return true;\n e = e.parentNode;\n }\n return false;\n };\n\nconfig.shadowTiddlers.DropTagsMacroDocumentation="The documentation is available [[here.|http://lewcid.googlepages.com/lewcid.html#DropTagsMacroDocumentation]]";\n\nconfig.shadowTiddlers.DropTagsMacroSource="The documentation is available [[here.|http://lewcid.googlepages.com/lewcid.html#DropTagsMacroDocumentation]]";\n\n//}}}
/***\n|Macro name|fontSize|h\n|Created by|[[Saq Imtiaz]]|\n|Location|http://lewcid.googlepages.com/lewcid.html#FontSizePlugin|\n|Version|1.0|\n|Requires|~TW2.x|\n|Description|Resize tiddler text on the fly. The text size is remembered between sessions by use of a cookie.\nYou can customize the maximum and minimum allowed sizes. (only affects tiddler content text, not any other text)|\n\nAlso, you can load a TW file with a font-size specified in the url.\nEg: http://lewcid.googlepages.com/lewcid.html#font:110\n\n!Demo:\nTry using the font-size buttons in the sidebar, or in the MainMenu above.\n\n!Installation:\nCopy the contents of this tiddler to your TW, tag with systemConfig, save and reload your TW.\nThen put {{{<<fontSize "font-size:">>}}} in your SideBarOptions tiddler, or anywhere else that you might like.\n\n!Usage\n{{{<<fontSize>>}}} results in <<fontSize>>\n{{{<<fontSize font-size: >>}}} results in <<fontSize font-size:>>\n\n!Customizing:\nThe buttons and prefix text are wrapped in a span with class fontResizer, for easy css styling.\nTo change the default font-size, and the maximum and minimum font-size allowed, edit the config.fontSize.settings section of the code below.\n\n!Notes:\nThis plugin assumes that the initial font-size is 100% and then increases or decreases the size by 10%. This stepsize of 10% can also be customized.\n\n!History:\n*27-07-06, version 1.0 : prevented double clicks from triggering editing of containing tiddler.\n*25-07-06, version 0.9\n\n!Code\n***/\n\n//{{{\nconfig.fontSize={};\n\n//configuration settings\nconfig.fontSize.settings =\n{\n defaultSize : 100, // all sizes in %\n maxSize : 200,\n minSize : 40,\n stepSize : 10\n};\n\n//startup code\nvar fontSettings = config.fontSize.settings;\n\nif (!config.options.txtFontSize)\n {config.options.txtFontSize = fontSettings.defaultSize;\n saveOptionCookie("txtFontSize");}\nsetStylesheet(".tiddler .viewer {font-size:"+config.options.txtFontSize+"%;}\sn","fontResizerStyles");\nsetStylesheet("#contentWrapper .fontResizer .button {display:inline;font-size:105%; font-weight:bold; margin:0 1px; padding: 0 3px; text-align:center !important;}\sn .fontResizer {margin:0 0.5em;}","fontResizerButtonStyles");\n\n//macro\nconfig.macros.fontSize={};\nconfig.macros.fontSize.handler = function (place,macroName,params,wikifier,paramString,tiddler)\n{\n\n var sp = createTiddlyElement(place,"span",null,"fontResizer");\n sp.ondblclick=this.onDblClick;\n if (params[0])\n createTiddlyText(sp,params[0]);\n createTiddlyButton(sp,"+","increase font-size",this.incFont);\n createTiddlyButton(sp,"=","reset font-size",this.resetFont);\n createTiddlyButton(sp,"–","decrease font-size",this.decFont);\n}\n\nconfig.macros.fontSize.onDblClick = function (e)\n{\n if (!e) var e = window.event;\n e.cancelBubble = true;\n if (e.stopPropagation) e.stopPropagation();\n return false;\n}\n\nconfig.macros.fontSize.setFont = function ()\n{\n saveOptionCookie("txtFontSize");\n setStylesheet(".tiddler .viewer {font-size:"+config.options.txtFontSize+"%;}\sn","fontResizerStyles");\n}\n\nconfig.macros.fontSize.incFont=function()\n{\n if (config.options.txtFontSize < fontSettings.maxSize)\n config.options.txtFontSize = (config.options.txtFontSize*1)+fontSettings.stepSize;\n config.macros.fontSize.setFont();\n}\n\nconfig.macros.fontSize.decFont=function()\n{\n\n if (config.options.txtFontSize > fontSettings.minSize)\n config.options.txtFontSize = (config.options.txtFontSize*1) - fontSettings.stepSize;\n config.macros.fontSize.setFont();\n}\n\nconfig.macros.fontSize.resetFont=function()\n{\n\n config.options.txtFontSize=fontSettings.defaultSize;\n config.macros.fontSize.setFont();\n}\n\nconfig.paramifiers.font =\n{\n onstart: function(v)\n {\n config.options.txtFontSize = v;\n config.macros.fontSize.setFont();\n }\n};\n//}}}
/***\n|Name|fullscreen plugin macros|h\n|Created by|[[Saq Imtiaz]]|\n|Location|http://lewcid.googlepages.com/lewcid.html#FullScreenPlugin|\n|Version|1.1|\n|Requires|~TW2.x|\n|!Description:|Toggle between viewing tiddlers fullscreen and normally. Very handy for when you need more viewing space.|\n\n!Demo:\nClick the ↕ button in the toolbar for this tiddler. Click it again to turn off fullscreen.\n\n!Installation:\nCopy the contents of this tiddler to your TW, tag with systemConfig, save and reload your TW.\nEdit the ViewTemplate to add the fullscreen command to the toolbar.\n\n!History:\n*25-07-06: ver 1.1\n*20-07-06: ver 1.0\n\n!Code\n***/\n//{{{\nvar lewcidFullScreen = false;\n\nconfig.commands.fullscreen =\n{\n text:" ↕ ",\n tooltip:"Fullscreen mode"\n};\n\nconfig.commands.fullscreen.handler = function (event,src,title)\n{\n if (lewcidFullScreen == false)\n {\n lewcidFullScreen = true;\n setStylesheet('#sidebar, .header, #mainMenu{display:none;} #displayArea{margin:0em 0 0 0 !important;}',"lewcidFullScreenStyle");\n }\n else\n {\n lewcidFullScreen = false;\n setStylesheet(' ',"lewcidFullScreenStyle");\n }\n}\n\nconfig.macros.fullscreen={};\nconfig.macros.fullscreen.handler = function(place,macroName,params,wikifier,paramString,tiddler)\n{\n var label = params[0]||" ↕ ";\n var tooltip = params[1]||"Fullscreen mode";\n createTiddlyButton(place,label,tooltip,config.commands.fullscreen.handler);\n}\n\nvar lewcid_fullscreen_closeTiddler = Story.prototype.closeTiddler;\nStory.prototype.closeTiddler =function(title,animate,slowly)\n{\n lewcid_fullscreen_closeTiddler.apply(this,arguments);\n if (story.isEmpty() && lewcidFullScreen == true)\n config.commands.fullscreen.handler();\n}\n\n\nSlider.prototype.lewcidStop = Slider.prototype.stop;\nSlider.prototype.stop = function()\n{\n this.lewcidStop();\n if (story.isEmpty() && lewcidFullScreen == true)\n config.commands.fullscreen.handler();\n}\n//}}}
/***\n| Name:|''monkeyTagger''|\n| Created by:|SaqImtiaz|\n| Location:|http://lewcid.googlepages.com/lewcid.html|\n| Version:|0.9 (08-Apr-2006)|\n| Requires:|~TW2.07|\n\n!About:\n*an adaptation of TagAdderMacro for monkeyGTD and tagglytagging user, but could be useful to just about anyone!\n*{{{<<monkeyTagger Project>>}}} gives a drop down list of all tags, tagged with Project.\n*The list allows toggling of tags on the current tiddler.\n*logging options for task management.\n\n!Demo:\n<<monkeyTagger Status>>\n\n!Installation:\n*Copy this tiddler to your TW with the systemConfig tag\n*either copy the following to your ViewTemplate:\n{{{<div class='tagged' macro='monkeyTagger tagToTrack'></div>}}}\nor\n*better yet, define your own toolbar class and add as many as you need to create a nice toolbar.\nEg:\n{{{<div class='toolbar' >\n<span style="padding-right:0.15em;" macro='monkeyTagger Project'></span>\n<span style="padding-right:0.15em;" macro='monkeyTagger Status'></span>\n<span macro='toolbar -closeTiddler closeOthers +editTiddler permalink references jump'></span>\n</div>}}}\n (adjust padding to taste)\n\n!Usage:\n\n''Syntax:''\n|>|{{{<<monkeyTagger source:"sourcetag" label:"customlabel" logging:"true/false" anchor:"anchortext" arrow:"true/false">>}}}|\n|label:|quoted text to use as a customlabel|\n|arrow:|add arrow to custom label, values are "true" or "false"|\n|anchor:|quoted text to specify where to add logging text|\n|logging:|enable logging of tags added (for task management), values are "true" or "false"|\n\nthe only parameter you ''have'' to pass is the source. When passing only one parameter, you can write either something like:\n{{{<<monkeyTagger "Project">>}}} or {{{<<monkeyTagger source:"Project">>}}} for <<monkeyTagger Project>>\nAll other parameters are optional, and can be written in any order.\n\n''Defaults:''\n|label:|default label if not specified = source tag + arrow|\n|arrow:|true |\n|logging:|false |\n|anchor:|none used by default, logging text added to end of tiddler |\n\n''Examples:''\n|custom label| {{{<<monkeyTagger source:"Project" label:"customlabel">>}}} |<<monkeyTagger source:"Project" label:"customlabel">>|\n|custom label without arrow| {{{<<monkeyTagger source:"Project" label:"customlabel" arrow:"false">>}}} |<<monkeyTagger source:"Project" label:"customlabel" arrow:"false">>|\n|logging enabled| {{{<<monkeyTagger source:"Project" logging:"true"}}} |<<monkeyTagger source:"Project" logging:"true">>|\n|logging enabled with anchor text|{{{<<monkeyTagger source:"Project" logging:"true" anchor:"anchortext"}}} |<<monkeyTagger source:"Project" logging:"true" anchor:"anchortext">>|\n\n''Tips:''\n*Make sure your anchor text doesn't occur more than once in every tiddler, as the first instance will be used.\n*I recommend using something like {{{/%StatusLog%/}}} as an invisible anchor.\n*Use a tag based template, and add monkeyTagger macro's with logging enabled to the toolbar in just your taskmanagement templates.\n\n!To Do:\n*add sorting options if requested.\n*''add exclude tag feature''!\n\n!History\n*Version 0.9: \n**changed to named parameters to make it more user friendly\n**added option to disable/enable dropdown arrow in custom labels\n**added logging option with anchor text.\n\n!CODE\n***/\n//{{{\n\nconfig.macros.monkeyTagger= {};\n//config.macros.monkeyTagger.dropdownchar = (document.all?"â–¼":"â–¾"); // the fat one is the only one that works in IE\nconfig.macros.monkeyTagger.dropdownchar = "â–¼"; // uncomment previous line and comment this for smaller version in FF\nconfig.macros.monkeyTagger.handler = function(place,macroName,params,wikifier,paramString,tiddler)\n{\n var nAV = paramString.parseParams('test', null, true);\n\n if ((nAV[0].arrow)&&(nAV[0].arrow[0])=='false')\n var arrow=': ';\n else\n var arrow=': '+ config.macros.monkeyTagger.dropdownchar;\n\n if((nAV[0].source)&&(nAV[0].source[0])!='.')\n {var tagToTrack = nAV[0].source[0]}\n else if(params[0]&&(params[0]!='.'))\n {var tagToTrack = params[0]}\n else\n {return false;};\n var monkeylabel = ((nAV[0].label)&&(nAV[0].label[0])!='.')?nAV[0].label[0]+arrow: tagToTrack+arrow;\n var logmode = ((nAV[0].logging)&&(nAV[0].logging[0])!='.')?nAV[0].logging[0]: "false";\n if ((nAV[0].anchor)&&(nAV[0].anchor[0])!='.')\n var anchor = nAV[0].anchor[0];\n var monkeytooltip=tagToTrack + ' :';\n\n\n if(tiddler instanceof Tiddler)\n {var title = tiddler.title;\n \n var addcomment = function(tiddler,newTag){\n var now = new Date();\n var timeFormat= 'DD/0MM/YY 0hh:0mm';\n var formattednow= now.formatString(timeFormat);\n var txt="\sn*''"+tagToTrack+"'' set as ''"+newTag+"'' on "+formattednow;\n if (anchor && anchor!='.')\n {var pos=tiddler.text.indexOf(anchor);\n if (pos!=-1) {pos=pos + anchor.length}\n else if (pos==-1) {pos=tiddler.text.length}}\n else if (!anchor){var pos = tiddler.text.length;};\n\n tiddler.set(null,tiddler.text.substr(0,pos)+txt+tiddler.text.substr(pos));\n story.refreshTiddler(tiddler.title,null,true);\n return false;\n}\n\n var ontagclick = function(e) {\n if (!e) var e = window.event;\n var tag = this.getAttribute("tag");\n var t=store.getTiddler(title);\n if (!t || !t.tags) return;\n if (t.tags.find(tag)==null)\n {t.tags.push(tag)\n if (logmode=="true"){addcomment(t,tag);}}\n else\n {t.tags.splice(t.tags.find(tag),1)};\n story.saveTiddler(title);\n story.refreshTiddler(title,null,true);\n return false;\n };\n var onclick = function(e) {\n if (!e) var e = window.event;\n var popup = Popup.create(this);\n var thistiddler=store.getTiddler(title);\n\n var taggedarray = new Array();\n var tagslabel = new Array();\n\n var taggedtiddlers = store.getTaggedTiddlers(tagToTrack);\n for (var t=0; t<taggedtiddlers.length; t++){\n var taggedtitle= ((taggedtiddlers[t]).title);\n taggedarray.push(taggedtitle);}\n\n for (var t=0; t<taggedarray.length; t++){\n var temptag = taggedarray[t];\n if (thistiddler.tags.find(temptag)==null)\n {var temptag='[ ] '+ temptag;\n tagslabel.push(temptag);}\n else\n {var temptag ='[x] '+ temptag;\n tagslabel.push(temptag);}\n }\n\n if(tagslabel.length == 0)\n createTiddlyText(createTiddlyElement(popup,"li"),('no '+tagToTrack));\n for (var t=0; t<tagslabel.length; t++)\n {\n var theTag = createTiddlyButton(createTiddlyElement(popup,"li"),tagslabel[t],("toggle '"+ ([taggedarray[t]]))+"'",ontagclick);\n theTag.setAttribute("tag",taggedarray[t]);\n }\n Popup.show(popup,false);\n e.cancelBubble = true;\n if (e.stopPropagation) e.stopPropagation();\n return(false);\n};\n //createTiddlyButton(place,monkeylabel,monkeylabel,onclick);\n\nvar createdropperButton = function(place){\nvar sp = createTiddlyElement(place,"span",null,"monkeytaggerbutton");\nvar theDropDownBtn = createTiddlyButton(sp,monkeylabel,monkeytooltip,onclick);\n};\n\ncreatedropperButton(place);\n }\n};\nsetStylesheet(\n ".toolbar .monkeytaggerbutton {margin-right:0em; border:0px solid #fff; padding:0px; padding-right:0px; padding-left:0px;}\sn"+\n ".monkeytaggerbutton a.button {padding:2px; padding-left:2px; padding-right:2px;}\sn"+\n// ".monkeytaggerbutton {font-size:130%;}\sn"+\n//".monkeytaggerbutton .button {color:#703;}\sn"+\n "",\n"MonkeyTaggerStyles");\n\n//}}}
/***\n|Macro name|popup|h\n|Plugin name|popup plugin macro|\n|''Version:''|1.0.0 (2006-05-09)|\n|''Source:''|http://lewcid.googlepages.com/lewcid.html#PopupMacro|\n|''Author:''|Saq Imtiaz|\n|''Description:''|Create popups with custom content|\n|''Documentation:''|[[Popup macro documentation|PopupMacroDocs]]|\n|''~Requires:''|TW Version 2.0.8 or better|\n***/\n// /%\n{{{\nconfig.macros.popup = {};\nconfig.macros.popup.arrow = (document.all?"â–¼":"â–¾");\nconfig.macros.popup.handler = function(place,macroName,params,wikifier,paramString,theTiddler) {\n\n if (!params[0] || !params[1]) \n {createTiddlyError(place,'missing macro parameters','missing label or content parameter');\n return false;};\n \n var label = params[0];\n var source = (params[1]).replace(/\s$\s)\s)/g,">>"); \n var nestedId = params[2]? params[2]: 'nestedpopup'; \n\n var onclick = function(event) {\n if(!event){var event = window.event;}\n var theTarget = resolveTarget(event);\n var nested = (!isNested(theTarget));\n \n if ((Popup.stack.length > 1)&&(nested==true)) {Popup.removeFrom(1);}\n else if(Popup.stack.length > 0 && nested==false) {Popup.removeFrom(0);};\n \n var theId = (nested==false)? "popup" : nestedId; \n var popup = createTiddlyElement(document.body,"ol",theId,"popup",null);\n Popup.stack.push({root: button, popup: popup});\n\n wikify(source,popup);\n Popup.show(popup,true);\n event.cancelBubble = true;\n if (event.stopPropagation) event.stopPropagation();\n return false;\n }\n var button = createTiddlyButton(place, label+this.arrow,label, onclick, null);\n};\n\nwindow.isNested = function(e) {\n while (e != null) {\n var contentWrapper = document.getElementById("contentWrapper");\n if (contentWrapper == e) return true;\n e = e.parentNode;\n }\n return false;\n};\n\nsetStylesheet(\n".popup, .popup a, .popup a:visited {color: #fff;}\sn"+\n".popup a:hover {background: #014; color: #fff; border: none;}\sn"+\n".popup li , .popup ul, .popup ol {list-style:none !important; margin-left:0.3em !important; margin-right:0.3em; font-size:100%; padding-top:0.5px !important; padding:0px !important;}\sn"+\n"#nestedpopup {background:#2E5ADF; border: 1px solid #0331BF; margin-left:1em; }\sn"+\n"",\n"CustomPopupStyles");\n\nconfig.shadowTiddlers.PopupMacroDocs="The documentation is available [[here.|http://lewcid.googlepages.com/lewcid.html#PopupMacroDocs]]";\n}}}\n//%/
\n''If you want this documentation available offline, you will need to copy this tiddler to your TW.''\n!Description:\nUsing the popup macro you can create popups with any wiki text. The wiki text can be written in the macro call, can be generated using a different macro, or included from a tiddler.\n\n!Usage:\n*the button label is the first parameter\n*the text to put in the popup is the second parameter\n**embed macro output like forEachTiddler or tiddlerList\n***start macro calls with {{{<<}}} like normal, but end with {{{$))}}}\n**define popup content inline, or embed from a tidder using the core tiddler macro {{{<<tiddler$))}}}\n*you can nest popups up to one level\n**nested popups have an id of 'nestedpopup' for easier styling.\n**specify unique id's for nested popups by passing the id as a third parameter.\n\n----\n!Example's\n\n''Put a forEachTiddler macro generated list in a popup:''\n{{{<<popup forEachTiddlerDemo [[<<forEachTiddler where 'tiddler.tags.contains("systemConfig")']]$))}}}\n<<popup forEachTiddlerDemo [[<<forEachTiddler\nwhere\n'tiddler.tags.contains("systemConfig")'$))]]>>\n\n''Use the core {{{<<tiddler>>}}} macro to put the contents of a tiddler into a popup:''\nMainMenu popup:\n{{{<<popup MainMenu [[<<tiddler MainMenu$))]]>>}}}\n<<popup MainMenu [[<<tiddler MainMenu$))]]>>\n\n''Or create a custom menu in a tiddler using various macro's and normal tiddlylinks.''\n{{{<<popup CustomMenu '<<tiddler CustomMenu$))'>>}}}\n<<popup CustomMenu '<<tiddler CustomMenu$))'>>\nthis menu was created with a combination of forEachTiddler and normal tiddlyLinks!\nNote that the 'Plugins' button opens a second nested popup.\nSource tiddler: CustomMenu\n\n''Or define your custom menu inline.''\n{{{<<popup 'Inline Custom Menu' [[Custom Menu\n*MainMenu\n----\n<<forEachTiddler\n where\n 'tiddler.tags.contains("systemConfig")']]$))]] \n>>}}}\n<<popup 'Inline Custom Menu' [[Custom Menu\n*MainMenu\n----\n<<forEachTiddler where 'tiddler.tags.contains("systemConfig")'$))]] \n>>\n\n''Note: you can pass a third parameter and it will be set as the id of any nested popups''\nBy default, nested popups have an id of 'nestedpopup' to facilitate styling.\n\n----\n!Current Issues:\n*better support for custom classes for popups and nestedpopups\n----\n!Code\nPopupMacro\n\n
/***\n|Macro Name|pub|\n|Created by|[[Frank Dellaert|http://www.cc.gatech.edu/~dellaert/tiddly.html]]|\n|Location|http://www.cc.gatech.edu/~dellaert/tiddly.html#PublicationPlugin|\n|Version|1.0|\n!Description\nA simple plugin to format publication references. This macro takes the following (mandatory) arguments in order:\n*title: title of the publication\n*url: url to publication\n*authors: a comma separated list of author names or aliases defined using [[Alias Plugin Macro|http://www.tiddlyforge.net/pytw/#AliasPlugin]]\n*citation: booktitle or journal or institution, will become a Tiddler link\n*year: publication year\nThe publication is then rendered using a link to the paper, with author aliases substituted (if defined), and the citation rendered as a Tiddler link.\n!Example\n{{{<<alias A1 First Author>>}}}<<alias A1 First Author>>\n{{{<<alias A2 "[[Linked Author|a2.html]]">>}}}<<alias A2 "[[Linked Author|a2.html]]">>\n{{{<<A1>>, <<A2>>}}}\n <<A1>>, <<A2>>\n\n{{{<<pub "My Paper's Title" URL "A1,A2" "Some Journal" 2005>>}}}\n <<pub "My Paper's Title" URL "A1,A2" "Some Journal" 2005>>\n\n{{{<<pub "My Other Paper" URL2 "A2" "Some Conference" 2003>>}}}\n <<pub "My Other Paper" URL2 "A2" "Some Conference" 2003>>\n\n!Code\n***/\n//{{{\nconfig.macros.pub = {};\n\nfunction adorn(author) {\n var alias = config.macros[author];\n if (alias) {return alias.name?alias.name:alias.text} else {return author}\n}\n\nconfig.macros.pub.handler= function(place,macroName,params) {\n var title = params[0];\n var url = params[1];\n var authors = params[2].split(",");\n var citation = params[3];\n var year = params[4];\n\n // expand author aliases\n var aliases = adorn(authors[0]);\n for (var i=1; i < authors.length; i++) {\n aliases = aliases + ", " + adorn(authors[i])\n }\n wikify("''[[" + title + "|" + url + "]]'', " + aliases + ", [[" + citation + "]], " + year, place);\n}\n\n//}}}\n
/***\n|Macro|redirect (alias)|\n|Author|[[Clint Checketts]] and Paul Petterson|\n|Version|1.1 Jan 26, 2006|\n|Location|http://checkettsweb.com/styles/themes.htm#RedirectMacro|\n|Description|This macro tells TW to find all instances of a word and makes it point to a different link. For example, whenever I put the word 'Clint' in a tiddler I want TiddlyWiki to turn it into a link that points to a tiddler titled 'Clint Checketts' Or the word 'TW' could point to a tiddler called 'TiddlyWiki' It even matches clint (which is lowercase) [[Clint]] leet lEEt LEET|\n|Usage|{{{<<redirect TW TiddlyWiki>>}}} |\n|Example|<<redirect TW "TiddlyWiki">> <<redirect Clint "Clint Checketts">> (Nothing should appear, it's just setting it all up)<<redirectExact lEEt Elite>>|\n\n!Revisions\n1.1- Fixed tiddler refresh so a tiddler declaring a redirect will also render the redirect\n1.0- Updated to work with TiddlyWiki 2.0 (thanks to Udo Borkowski)\n0.9- Original release October 2005\n\n!Code\n***/\n//{{{\nversion.extensions.redirectExact = {major: 1, minor: 2, revision: 0, date: new Date(2005,10,24)};\nconfig.macros.redirectExact = {label: "Pickles Rock!"};\nconfig.macros.redirectExact.handler = function(place,macroName,params,wikifier,paramString,tiddler){\n config.macros.redirect.handler(place,macroName,params,wikifier,paramString,tiddler);\n}\n\nversion.extensions.redirect = {major: 1, minor: 2, revision: 0, date: new Date(2005,10,24)};\nconfig.macros.redirect = {label: "Pickles Rock!"};\n\nconfig.macros.redirect.handler = function(place,macroName,params,wikifier,paramString,tiddler){\n\nvar redirectExists = false\n// Check to see if the wikifier exists\nfor (var i=0;i<config.formatters.length;i++)\n if (config.formatters[i].name == "redirect"+params[0])\n redirectExists = true;\n\n//If it doesn't exist, add it!\nif (!redirectExists){\n for( var i=0; i<config.formatters.length; i++ )\n if ( config.formatters[i].name=='wikiLink') break ;\n\n if ( i >= config.formatters.length ) {\n var e = "Can't find formatter for wikiLink!" ;\n displayMessage( e ) ;\n throw( e ) ;\n }\n\nvar pattern;\n if (macroName == 'redirect'){pattern=params[0].escapeRegExp().replace(/([A-Z])/img, function($1) {return("["+$1.toUpperCase()+$1.toLowerCase()+"]");});\n } else {\n pattern=params[0].escapeRegExp();\n }\n\n config.formatters.splice( i, 0, {\n name: "redirect"+params[0],\n match: "(?:\s\sb)(?:\s\s[\s\s[)?"+pattern+"(?:\s\s]\s\s])?(?:\s\sb)",\n subst: params[1],\n handler: function(w) {\n var link = createTiddlyLink(w.output,this.subst,false);\n w.outputText(link,w.matchStart,w.nextMatch);\n }\n });\n formatter = new Formatter(config.formatters); //update the tiddler\n if(tiddler) story.refreshTiddler(tiddler.title,null,true); //refresh tiddler so the new rule is applied\n} // End if\n}\n//}}}
/***\n|Macro Name:|siteMap|h\n|Author:|Simon Baird|\n|Location:|http://simonbaird.com/mptw/#SiteMapMacro|\n|Version:|1.0.3, 15-Mar-06|\n\n!!Examples\nSee SiteMap and SliderSiteMap for example usage.\n\n!!Parameters\n* Name of tiddler to start at\n* Max depth (a number) \n* Format (eg, nested, see formats below)\n* Don't show root flag (anything other than null turns it on)\n* Tags - a string containing a bracketed list of tags that we are interested in\n\n!!History\n* 1.0.3 (15-Mar-06)\n** added tag filtering\n* 1.0.2 (15-Mar-06)\n** Added json format and dontshowroot option\n* 1.0.1 (9-Mar-06)\n** Added selectable formats and fixed nested slider format\n* 1.0.0 (8-Mar-06)\n** first release\n\n***/\n//{{{\n\nversion.extensions.SiteMapMacro = {\n major: 1,\n minor: 0,\n revision: 3,\n date: new Date(2006,3,15),\n source: "http://simonbaird.com/mptw/#SiteMapMacro"\n};\n\nconfig.macros.siteMap = {\n\n formats: {\n bullets: {\n formatString: "%0[[%1]]\sn%2",\n indentString: "*"\n },\n\n // put this in your StyleSheet to make it look good.\n // .sliderPanel { margin-left: 2em; }\n\n sliders: {\n formatString: "[[%1]]+++\sn%2===\sn\sn",\n formatStringLeaf: "[[%1]]\sn"\n },\n\n openSliders: {\n formatString: "[[%1]]++++\sn%2===\sn\sn",\n formatStringLeaf: "[[%1]]\sn"\n },\n\n popups: {\n formatString: "[[%1]]+++^\sn%2===\sn\sn",\n formatStringLeaf: "[[%1]]\sn"\n },\n\n // these don't work too well\n openPopups: {\n formatString: "[[%1]]++++^\sn%2===\sn\sn",\n formatStringLeaf: "[[%1]]\sn"\n },\n \n // this is a little nuts but it works\n json: {\n formatString: '\sn%0{"%1":[%2\sn%0]}',\n formatStringLeaf: '\sn%0"%1"',\n indentString: " ",\n separatorString: ","\n }\n\n\n },\n\n defaultFormat: "bullets",\n\n treeTraverse: function(title,depth,maxdepth,format,dontshowroot,tags,excludetags) {\n\n var tiddler = store.getTiddler(title);\n var tagging = store.getTaggedTiddlers(title);\n\n if (dontshowroot)\n depth = 0;\n\n var indent = "";\n if (this.formats[format].indentString)\n for (var j=0;j<depth;j++)\n indent += this.formats[format].indentString;\n\n var childOutput = "";\n if (!maxdepth || depth < parseInt(maxdepth)) \n for (var i=0;i<tagging.length;i++)\n if (tagging[i].title != title) {\n if (this.formats[format].separatorString && i != 0)\n childOutput += this.formats[format].separatorString;\n childOutput += this.treeTraverse(tagging[i].title,depth+1,maxdepth,format,null,tags,excludetags);\n }\n\n if (childOutput == "" && (\n (tags && tags != "" && !tiddler.tags.containsAll(tags.readBracketedList())) ||\n (excludetags && excludetags != "" && tiddler.tags.containsAny(excludetags.readBracketedList()))\n )\n ) {\n // so prune it cos it doesn't have the right tags and neither do any of it's children\n return "";\n }\n\n if (dontshowroot)\n return childOutput;\n\n if (this.formats[format].formatStringLeaf && childOutput == "") {\n // required for nestedSliders\n return this.formats[format].formatStringLeaf.format([indent,title,childOutput]);\n }\n\n return this.formats[format].formatString.format([indent,title,childOutput]);\n },\n\n handler: function (place,macroName,params,wikifier,paramString,tiddler) {\n wikify(this.treeTraverse(\n params[0] && params[0] != '.' ? params[0] : tiddler.title, 1, \n params[1] && params[1] != '.' ? params[1] : null, // maxdepth\n params[2] && params[2] != '.' ? params[2] : this.defaultFormat, // format\n params[3] && params[3] != '.' ? params[3] : null, // dontshowroot\n params[4] && params[4] != '.' ? params[4] : null, // tags\n params[5] && params[5] != '.' ? params[5] : null // excludetags\n ),place);\n }\n\n}\n\n//}}}\n
/***\n|Macro Name|''tagAdder''|h\n| Created by|[[Saq Imtiaz]]|\n| Location|http://lewcid.googlepages.com/lewcid.html|\n| Version|0.61 (07 Apr-2006)|\n| Requires|~TW2.07|\n!About\n*provides a drop down list for toggling tags \n*you can specify which tags to list, and have multiple drop downs with different tag lists.\n\n!Demonstration\n<<tagAdder>>\n{{{<<tagAdder>>}}}\n\n''I recommend using either tagAdder or monkeyTagger, with dropTags and dropTagging in the toolbar:''\n\n!Installation:\n*Copy this tiddler to your TW with the systemConfig tag\n* copy the following to your ViewTemplate:\n#either {{{\n<div class='tagged' macro='tagAdder'></div>\n}}} to add to next to the tags macro in the viewer area, or\n#{{{<div class='toolbar' >\n<span style="padding-right:1.75em;" macro='tagAdder'></span>\n<span macro='toolbar -closeTiddler closeOthers +editTiddler permalink references jump'></span></div>}}} to add to the toolbar.\n(adjust padding to taste)\n\n!Usage:\n*by default {{{<<tagAdder>>}}} will display drop down list of all tags, with tags present on the tiddler grouped together.\n*to sort alphabetically (ignoring the [x]), use {{{<<tagAdder 'nogroup'>>}}}\n*to specify what tags to list, use {{{<<tagAdder 'group/nogroup' 'tiddler'>>}}} where tiddler is a tiddler that is tagged with the tags you want to list. (use one of either group or no group, not both!)\nEg: TagDataBase is my tiddler that is tagged with the tags I want to list, so I will use {{{<<tagAdder 'group' 'TagDataBase'>>}}}\n for a list like this: <<tagAdder 'group' 'TagDataBase'>>\n*you can specify a custom label by giving the macro an additional parameter.\nEg: {{{<<tagAdder 'group' 'TagDataBase' 'custom label'>>}}} gives <<tagAdder 'group' 'TagDataBase' 'custom label'>>\n\n!Tips:\n*On the tiddler you want to use as your TagsDataBase, add {{{<<tagAdder>>}}} for a drop down list of all tags, so you can easily toggle tags on it!\n*You can have as many TagDataBases as you like.\n\n!Notes:\n*use css to style to taste\n*tags to be removed are preceded by [x]\n\n!To Do:\n*Combine with features of normal tags drop down list.(drop tag macro)\n*TagsDB manager\n*''add exclude tag feature''\n\n!History\n*07 Apr-2006, version 0.61\n**fixed IE bug with not returning false \n\n!CODE\n***/\n//{{{\n\nconfig.macros.tagAdder= {};\n//config.macros.tagAdder.dropdownchar = (document.all?"â–¼":"â–¾"); // the fat one is the only one that works in IE\nconfig.macros.tagAdder.dropdownchar = "â–¼"; // uncomment previous line and comment this for smaller version in FF\nconfig.macros.tagAdder.handler = function(place,macroName,params,wikifier,paramString,tiddler)\n{\n var arrow=': '+ config.macros.tagAdder.dropdownchar;\n var tAsort = (params[0] && params[0] !='.') ? params[0]: 'group';\n if (params[1]){var tAsource=params[1]};\n if ((tAsource)&&(!store.getTiddler(tAsource)))\n return false;\n var tAlabel= (params[2] && params[2] !='.')? params[2]: 'toggle tags'+arrow;\n var tAtooltip= (params[2] && params[2] !='.')? params[2]: 'toggle tags on this tiddler';\n\n if(tiddler instanceof Tiddler)\n {\n var title = tiddler.title;\n var lingo = config.views.editor.tagChooser;\n \n var ontagclick = function(e) {\n if (!e) var e = window.event;\n var tag = this.getAttribute("tag");\n\n var t=store.getTiddler(title);\n if (!t || !t.tags) return;\n if (t.tags.find(tag)==null)\n {t.tags.push(tag)}\n else\n {t.tags.splice(t.tags.find(tag),1)};\n story.saveTiddler(title);\n story.refreshTiddler(title,null,true);\n return false;\n };\n\n var onclick = function(e) {\n if (!e) var e = window.event;\n var popup = Popup.create(this);\n var t=store.getTiddler(title);\n if (!t) return false;\n var tagsarray = store.getTags();\n var tagsvalue=new Array();\n\n for (var i=0; i<tagsarray.length; i++){\n var thetagonly= (tagsarray[i][0]);\n tagsvalue.push(thetagonly);}\n\n if (tAsource)\n {var sourcetiddler=store.getTiddler(tAsource);\n var tagsvalue=sourcetiddler.tags;\n }\n var tagslabel=new Array();\n var tagssorted=new Array();\n\n for (var i=0;i<tagsvalue.length;i++){\n var temptag=(tagsvalue[i]);\n if (t.tags.find(temptag)==null)\n {var temptagx = '[ ] '+temptag;\n tagslabel.push(temptagx);\n tagssorted.push(temptag);\n }\n else\n {var temptagx ='[x] '+temptag;\n if (tAsort=='group'){\n tagslabel.unshift(temptagx);\n tagssorted.unshift(temptag);}\n else if (tAsort=='nogroup'){\n tagslabel.push(temptagx);\n tagssorted.push(temptag);} }\n ;}\n\n\n if(tagsvalue.length == 0)\n createTiddlyText(createTiddlyElement(popup,"li"),lingo.popupNone);\n for (var t=0; t<tagsvalue.length; t++)\n {\n var theTag = createTiddlyButton(createTiddlyElement(popup,"li"),tagslabel[t],"toggle '"+([tagssorted[t]])+"'",ontagclick);\n theTag.setAttribute("tag",tagssorted[t]);\n }\n Popup.show(popup,false);\n e.cancelBubble = true;\n if (e.stopPropagation) e.stopPropagation();\n return(false);\n };\n //createTiddlyButton(place,tAlabel,tAtooltip,onclick);\nvar createdropperButton = function(place){\nvar sp = createTiddlyElement(place,"span",null,"tagadderbutton");\nvar theDropDownBtn = createTiddlyButton(sp,tAlabel,tAtooltip,onclick);\n};\n\ncreatedropperButton(place);\n}\n};\nsetStylesheet(\n ".toolbar .tagadderbutton { margin-right:0em; border:0px solid #eee; padding:0px; padding-right:0px; padding-left:0px; }\sn"+\n ".tagadderbutton a.button { padding:2px; padding-left:2px; padding-right:2px;}\sn"+\n// ".tagadderbutton {font-size:150%;}\sn"+\n "",\n"TagAdderStyles");\n\n//}}}\n\n
''If you want this documentation available offline, copy this tiddler to your TW.''\n\n!Description:\nThe tagger plugin is a result of combining key features from the dropTags and tagAdder macro's. However, since it departs somewhat from the interface tagAdder users will be familiar with, I'm making this available as a new plugin alongside tagAdder.\n\nTagger provides a dropdown list of the current tiddler tags, along with the ability to toggle them. Further it can optionally display a list of tags in the dropdown, which can be addded to the tiddler.\n\n*Clicking on ''[x]'' and ''[ ]'' removes and adds the tag respectively.\n*Clicking on the tag text displays the tag dropdown for that tag, listing tiddlers tagged with it.\n*The ''Create new tag'' lets you quickly type in a new tag not in the list.\n*Click on this button to see the dropdown: <<tagger>>\n\nFurther note that each tag dropdown has a ''Rename tag'' option. This can be used to quickly rename a tag in the entire TW, also rename it's tiddler if it exists.\n\n//''tagAdder, dropTags and the future''\n- tagAdder will no longer will be developed, but will remain available. I encourage all tagAdder users to upgrade to tagger.\n- dropTags will still be developed for those users that don't want the 'tag editing' features.//\n\n!Examples & Usage:\n*At it's simplest, using tagger is as simple as {{{<<tagger>>}}} <<tagger>>\n**This gives a dropdown with the current tiddler tags, followed by all the tags in the TW.\n*You can also use a list of specified tags instead of all tags in the TW, by specifying a source tiddler.\n**{{{<<tagger source:TagsDB>>}}} <<tagger source:TagDataBase>>\n*You can also display ONLY the current tiddler tags\n**{{{<<tagger taglist:false>>}}} <<tagger taglist:false>>\n\n*To exclude tags from the list: {{{<<tagger exclude:"excludeLists Tag2 [[Tag with spaces]]">>}}} <<tagger exclude:"excludeLists Tag2 [[Tag with spaces]]">>\n\n*For a custom button label: {{{<<tagger label:"custom label">>}}} <<tagger label:"custom label">>\n*For a custom tooltip: {{{<<tagger tooltip:"custom tooltip">>}}} <<tagger tooltip:"custom tooltip">>\n\n!CSS and Styling:\nFor those wishing to customize the popup appearance:\n*the main popup has a class and id of popup has with all other popups.\n*the nested tag popups have an id of nestedpopup\n\n!Advanced Users:\nYou can change the global defaults for tagger, like the button label, the tags to exclude or whether to display the taglist or not, by editing the ''config.tagger.defaults'' section in the code.\n\n!To Do:\n*code optimization\n*possibly a 'delete this tag' option.\n\n!History\n*version 1.0.1 (2006-06-01): fixed conflicts with QuickOpenTag (TagglyTagging) and AutoTagger.
/***\n|Macro name|''themeSelect''|h\n|Created by|SimonBaird and SaqImtiaz|\n|Location|http://lewcid.googlepages.com/lewcid.html#SelectThemePlugin|\n|Version|1.2.5|\n|Requires|~TW2.x|\n!Description\n*An alternative style switcher, can be used to switch just stylesheets and/or pagetemplates, or a combination of both (a theme)\n*you can add your own stylesheets and pagetemplates, or use a ThemePack, like BigThemePack.\n\n''This plugin was previously called StyleChooser.''\n\n!Usage\n* You have to have fetch or create some styleSheets and pageTemplates to use this plugin.\n**You can either get a ThemePack like BigThemePack which automatically adds themes to ThemeSelect.\n**or create tiddlers with styleSheets and pageTemplates and tag them styleSheets and pageTemplates respectively.\n* Put {{{<<themeSelect style 'Select theme'>>}}} in your SideBarOptions.\n\n!Creating Theme Packs\n*You can create your own theme pack if you like. Instructions can be found [[here.|CreateThemePack]]\n\n!History\n*20-Dec-06, v 1.2.5, fixed horizontal rules for IE (thanks Clint), compatibility fix with HoverMenuPlugin\n* 08-Sept-06, v1.2.4, fixed bug with TW2.1\n* 15-May-06, v1.2.3, added paramifier so you can put theme on url, eg http://www.somewhere.com/twfile.html#theme:Berry2, thanks Clint (Simon).\n* 28-Apr-o6, v1.2.2, fixed bug with opening TW after deleting themepacks. (Saq)\n* 26-Apr-06, v1.2.1, more code optimization, dropdowns now updated on the fly. (Saq)\n* 25-Apr-06, v1.2.0, added 3rd party ThemePack support, and made various other improvements.(Simon & Saq)\n* 24-Apr-06, v1.1.0, added: no styles and default styles options,<<br>>support for ThemePack, support for tag variations(Saq)\n* 21-Apr-06, v1.0.0, Reworked dropdowns to include option for pagetemplates (Saq)\n* 21-Apr-06, v0.9.0, Rewrote and added Saq's lovely dropdown select (Simon)\n* 20-Apr-06, v0.0.1, Basic switcher working (Simon)\n\n!Examples\n|!Source|!Output|h\n|{{{<<themeSelect style>>}}} for a dropdown with StyleSheets|<<themeSelect style>>|\n|{{{<<themeSelect pagetemplate>>}}} for a dropdown with PageTemplates|<<themeSelect pagetemplate>>|\n|{{{<<themeSelect style customlabel>>}}} to use a customlabel|<<themeSelect style customlabel>>|\n* When applying a stylesheet or template, it also looks for a template or stylesheet respectively based on naming convention, eg MyFunkyStyleSheet and MyFunkyPageTemplate.\n\n!Notes\n* See also http://www.tiddlytools.com/#SelectStyleSheetPlugin for a more feature-rich style sheet switcher\n\n! Ideas\n* do ViewTemplate also?\n* Pretty up the [x] bit\n\n!Code\n***/\n//{{{\n// for compatibility with TW <2.0.9\nif (!Array.prototype.contains)\n Array.prototype.contains = function(item)\n {\n return this.find(item) != null;\n };\n\n// for compatibility with TW <2.0.9\nif (!Array.prototype.containsAny)\n Array.prototype.containsAny = function(items)\n {\n for(var i=0; i<items.length; i++)\n if (this.contains(items[i]))\n return true;\n return false;\n };\n//}}}\n\n//{{{\nversion.extensions.SelectTheme = { major: 1, minor: 2, revision: 5, date: new Date(2006,12,20),\n source: "http://lewcid.googlepages.com/lewcid.html#SelectTheme"\n};\n\nconfig.SelectTheme = {\n things: {\n style: {\n tag: ["StyleSheets","StyleSheet","styleSheet","styleSheets","stylesheet","stylesheets"],\n theDefault: "StyleSheet",\n suffix: "StyleSheet",\n notify: refreshStyles,\n cookie: "txtStyleSheet",\n otherThing: "pagetemplate",\n label: "Choose StyleSheet: ",\n tooltip: "Choose a StyleSheet",\n caseNone: { text:"None", title:"NoStyleSheet"},\n caseDefault: { text:"Default", title:"StyleSheet" }\n\n },\n pagetemplate: {\n tag: ["PageTemplates","PageTemplate","pageTemplates","pageTemplate","pagetemplate","pagetemplates"],\n theDefault: "PageTemplate",\n suffix: "PageTemplate",\n notify: refreshPageTemplate,\n cookie: "txtPageTemplate",\n otherThing: "style",\n label: "Choose PageTemplate: ",\n tooltip: "Choose a PageTemplate",\n caseNone: { text:"None", title:"NoPageTemplate"},\n caseDefault: { text:"Default", title:"PageTemplate" }\n }\n\n },\n\n specialCases: ["caseNone","caseDefault"]\n\n};\n\nTiddlyWiki.prototype.removeNotification = function(title,fn) {\n for (var i=0;i<this.namedNotifications.length;i++)\n if((this.namedNotifications[i].name == title) && (this.namedNotifications[i].notify == fn))\n this.namedNotifications.splice(i,1); // counting on it only being there once\n}\n\nvar things = config.SelectTheme.things;\nvar specialCases=config.SelectTheme.specialCases;\n\nfor (var zz in things) {\n // make sure we have a value\n if (!config.options[things[zz].cookie])\n config.options[things[zz].cookie] = things[zz].theDefault;\n\n // remove core notify\n store.removeNotification(things[zz].theDefault,things[zz].notify);\n\n // and add our one\n store.addNotification(config.options[things[zz].cookie],things[zz].notify);\n\n}\n\n//checks to see if a tiddler exists in store or as a shadow.\nTiddlyWiki.prototype.isTiddler= function (title)\n {return store.tiddlerExists(title) || store.isShadowTiddler(title)}\n\n//hijack core function & make sure template exists\nwindow.applyPageTemplate_themeSelect=window.applyPageTemplate;\nwindow.applyPageTemplate=function(title){\n if(!store.isTiddler(title))\n {title = things.pagetemplate.theDefault;}\n applyPageTemplate_themeSelect(title);\n }\n\nTiddlyWiki.prototype.makeActiveTheme = function(what,title,alsoCheckOtherThing) {\n\n var thing = things[what];\n if (!store.isTiddler(title))\n title = thing.theDefault;\n\n var oldTitle = config.options[thing.cookie];\n\n if (what == "style") {\n // remove old style element from DOM\n var oldStyleElement = document.getElementById(oldTitle);\n oldStyleElement.parentNode.removeChild(oldStyleElement);\n }\n\n store.removeNotification(oldTitle,thing.notify);\n store.addNotification(title,thing.notify);\n store.notify(title);\n\n config.options[thing.cookie] = title;\n saveOptionCookie(thing.cookie);\n if (alsoCheckOtherThing)\n this.makeActiveTheme(thing.otherThing,\n title.replace(new RegExp(thing.suffix+"$"),"") + things[thing.otherThing].suffix,\n false);\n};\n\nif (config.hoverMenu)\n {\n old_hovermenu_makeActiveTheme = TiddlyWiki.prototype.makeActiveTheme;\n TiddlyWiki.prototype.makeActiveTheme = function(what,title,alsoCheckOtherThing)\n {\n old_hovermenu_makeActiveTheme.apply(this,arguments);\n if (!alsoCheckOtherThing)\n config.hoverMenu.handler();\n };\n }\n\nconfig.shadowTiddlers.NoStyleSheet = "";\nconfig.shadowTiddlers.NoPageTemplate = config.shadowTiddlers.PageTemplate;\n\nfunction switchTheme(e){\n if (!e) var e = window.event;\n var theTarget = resolveTarget(e);\n var theLink = theTarget;\n var switchTo= theLink.getAttribute("switchTo");\n var mode = theLink.getAttribute("mode");\n if ((config.options[things[mode].cookie])!=switchTo)\n {store.makeActiveTheme(mode,switchTo,true);};\n return(false);\n}\n\n\nconfig.macros.themeSelect={};\nconfig.macros.themeSelect.dropdownchar = (document.all?"â–¼":"â–¾");\nconfig.macros.themeSelect.handler = function(place,macroName,params,wikifier,paramString,tiddler){\n var arrow = config.macros.themeSelect.dropdownchar;\n var mode = params[0];\n var label = (params[1]?params[1]:things[mode].label) + arrow;\n var cookie = (config.options[things[mode].cookie]);\n\n var onclick = function(e)\n { if (!e) var e = window.event;\n var popup = Popup.create(this);\n\n var tagged=[];\n\n store.forEachTiddler(function(title,tiddler) {\n if ((tiddler.tags).containsAny(things[mode].tag)){\n tagged.push(tiddler.title);}\n });\n\n //integrate ThemePacks\n if (config.themes) {\n // see what themes have been loaded...\n for (var i=0;i<config.themes.length;i++) {\n // see if there is one\n var lookForThis = config.themes[i] + things[mode].suffix;\n if (store.isShadowTiddler(lookForThis)) {\n tagged.pushUnique(lookForThis);\n }\n }\n tagged = tagged.sort();\n }\n\n //this function used later to create buttons\n var createThemeButton = function(switchTo){\n var theButton = createTiddlyButton(createTiddlyElement(popup,"li"),text,null,switchTheme,useClass);\n theButton.setAttribute("switchTo",switchTo);\n theButton.setAttribute("mode",mode);};\n\n //create Buttons for None(shadow styles) & Default (StyleSheet)\n // Default button is not created if StyleSheet doesnt exist.\n for(var t=0; t<specialCases.length; t++){\n var special = specialCases[t];\n var text = things[mode][special].text;\n var useClass = "tiddlyLinkExisting"; //redundant, optimize!\n if ((things[mode][special].title==cookie)||(special=="caseNone"&&!store.isTiddler(cookie)))\n {text+= " [x]";\n useClass = "currentlySelected";}\n if (!((special=="caseDefault")&&(!store.getTiddler(things[mode][special].title))))\n createThemeButton(things[mode][special].title); }\n\n //insert horizontal rule\n //createTiddlyElement(createTiddlyElement(popup,"li"),"hr");\n createTiddlyElement(createTiddlyElement(popup,"li",null,"listBreak"),"div");\n\n //create buttons for all other stylesheet tiddlers\n for(var t=0; t<tagged.length; t++)\n { var useClass = "tiddlyLinkExisting";\n var text = (tagged[t]).replace((things[mode].suffix),"");\n if (tagged[t]==(cookie) )\n {text+=" [x]"; useClass="currentlySelected";}\n if ((tagged[t]!= (things[mode].theDefault))&&tagged[t]!= (things[mode].none))\n {createThemeButton(tagged[t]);}}\n Popup.show(popup,false);\n e.cancelBubble = true;\n if (e.stopPropagation)\n e.stopPropagation();\n return(false);\n };\n\n var createdropperButton = function(place){\n var sp = createTiddlyElement(place,"span",null,"ThemeChooserButton");\n var theDropDownBtn = createTiddlyButton(sp,label,things[mode].tooltip,onclick);\n };\n\n createdropperButton(place);\n};\n\nsetStylesheet(".popup li a.currentlySelected {background:#ccc;color:black;font-weight:bold;}","currentlySelectedStyle"); // could do better probably...\n\nconfig.macros.layoutChooser=config.macros.themeSelect;\n\n//shadow tiddler to hold instructions for creating ThemePacks\nconfig.shadowTiddlers.ThemePack='See http://simonbaird.com/mptw/#CreateThemePack'; \n\nconfig.macros.applyTheme = {handler: function (place,macroName,params,wikifier,paramString,tiddler) {\n var theme = params[0];\n var label = params[1]?params[1]:'Apply theme "' + theme + '"';\n var tooltip = 'Apply the "'+theme+'" theme to this TiddlyWiki';\n createTiddlyButton(place,label,tooltip,function() {\n store.makeActiveTheme("style",theme+things.style.suffix,true);\n });\n}};\n\n\n// this means you can put #theme:ThemeName in url. suggested by Clint\nconfig.paramifiers.theme = {\n onstart: function(themeName) {\n store.makeActiveTheme("style",themeName+config.SelectTheme.things.style.suffix,true);\n }\n};\n\n//}}}\n
/***\n|Macro name|''wikipedia''|h\n|Created by|[[Frank Dellaert|http://www.cc.gatech.edu/~dellaert]]|\n|Location|http://www.cc.gatech.edu/~dellaert/#WikipediaPlugin|\n|Version|1.0.1|\n!!!Description\nA TiddlyWikiMacro to easily create a link to a [[Wikipedia|http://en.wikipedia.org]] entry.\n!!!Example\n{{{<<wikipedia Bibtex>>}}}\n<<wikipedia Bibtex>>\n!!!Installation\nImport (or copy/paste) this tiddler into your document: and tag it with "systemConfig"\n!!!Code\n***/\n//{{{\nconfig.macros.wikipedia = {};\nconfig.macros.wikipedia.handler= function(place,macroName,params) {\n var key=params[0];\n wikify("[["+key+"|http://en.wikipedia.org/wiki/"+key+"]]",place)\n}\n//}}}\n
/***\n|Macro name|''yourSearch''|h\n|Version|2.0.2 (2006-02-13)|\n|Source|http://tiddlywiki.abego-software.de/#YourSearchPlugin|\n|Author|[[Udo Borkowski]] (ub [at] abego-software [dot] de)|\n|Licence|[[BSD open source license]]|\n|TiddlyWiki|2.0|\n|Browser|Firefox 1.0.4+; Firefox 1.5; InternetExplorer 6.0|\n<<tiddler [[YourSearch Introduction]]>>\nFor more information see [[Help|YourSearch Help]].\n\n!Compatibility\nThis plugin requires TiddlyWiki 2.0. \nUse http://tiddlywiki.abego-software.de/#YourSearchPlugin-1.0.1 for older TiddlyWiki versions.\n\n!Revision history\n* v2.0.2 (2006-02-13)\n** Bugfix for Firefox 1.5.0.1 related to the "Show prefix" checkbox. Thanks to Ted Pavlic for reporting and to BramChen for fixing. \n** Internal\n*** Make "JSLint" conform\n* v2.0.1 (2006-02-05)\n** Support "Exact Word Match" (use '=' to prefix word)\n** Support default filter settings (when no filter flags are given in search term)\n** Rework on the "less than 3 chars search text" feature (thanks to EricShulman)\n** Better support SinglePageMode when doing "Open all tiddlers" (thanks to EricShulman)\n** Support Firefox 1.5.0.1\n** Bug: Fixed a hilite bug in "classic search mode" (thanks to EricShulman)\n* v2.0.0 (2006-01-16)\n** Add User Interface\n* v1.0.1 (2006-01-06)\n** Support TiddlyWiki 2.0\n* v1.0.0 (2005-12-28)\n** initial version\n!Code\nThe code is compressed. \n\nYou can retrieve a readable source code version from http://tiddlywiki.abego-software.de/#YourSearchPlugin-src.\n/%\n***/\nif(!version.extensions.YourSearchPlugin){version.extensions.YourSearchPlugin={major:2,minor:0,revision:2,date:new Date(2006,2,13),type:"plugin",source:"http://tiddlywiki.abego-software.de/#YourSearchPlugin"};var alertAndThrow=function(_1){alert(_1);throw _1;};if(!window.abego){window.abego={};}if(abego.YourSearch){alertAndThrow("abego.YourSearch already defined");}abego.YourSearch={};if(version.major<2){alertAndThrow("YourSearchPlugin requires TiddlyWiki 2.0 or newer.\sn\snGet YourSearch 1.0.1 to use YourSearch with older versions of TiddlyWiki.\sn\snhttp://tiddlywiki.abego-software.de/#YourSearchPlugin-1.0.1");}var STQ=function(_2,_3,_4,_5){this.queryText=_2;this.caseSensitive=_3;if(_5){this.regExp=new RegExp(_2,_3?"mg":"img");return;}this.terms=[];var re=/\ss*(\s-)?([#%!=]*)(?:(?:("(?:(?:\s\s")|[^"])*")|(\sS+)))(?:\ss+((?:[aA][nN][dD])|(?:[oO][rR]))(?!\sS))?/mg;var _7=re.exec(_2);while(_7!=null&&_7.length==6){var _8="-"==_7[1];var _9=_7[2];var _a=_9.indexOf("!")>=0;var _b=_9.indexOf("%")>=0;var _c=_9.indexOf("#")>=0;var _d=_9.indexOf("=")>=0;if(!_a&&!_b&&!_c){_a=config.options.chkSearchInTitle;_b=config.options.chkSearchInText;_c=config.options.chkSearchInTags;if(!_a&&!_b&&!_c){_a=_b=_c=true;}}if(_4){_b=false;_c=false;}var _e;if(_7[3]){try{_e=eval(_7[3]);}catch(ex){}}else{_e=_7[4];}if(!_e){throw "Invalid search expression: %0".format([_2]);}var _f=_7[5]&&_7[5].charAt(0).toLowerCase()=="o";this.terms.push(new STQ.Term(_e,_a,_b,_c,_8,_f,_3,_d));_7=re.exec(_2);}};var me=STQ.prototype;me.getMatchingTiddlers=function(_10){var _11=[];for(var i in _10){var t=_10[i];if((t instanceof Tiddler)&&this.matchesTiddler(t)){_11.push(t);}}return _11;};me.matchesTiddler=function(_14){if(this.regExp){return this.regExp.test(_14.title)||this.regExp.test(_14.text);}var n=this.terms.length;if(n==0){return false;}var _16=this.terms[0].matchesTiddler(_14);for(var i=1;i<this.terms.length;i++){if(this.terms[i-1].orFollows){if(!_16){_16|=this.terms[i].matchesTiddler(_14);}}else{if(_16){_16&=this.terms[i].matchesTiddler(_14);}}}return _16;};me.getOnlyMatchTitleQuery=function(){if(!this.onlyMatchTitleQuery){this.onlyMatchTitleQuery=new STQ(this.queryText,this.caseSensitive,true,this.useRegExp);}return this.onlyMatchTitleQuery;};me.getMarkRegExp=function(){if(this.regExp){return "".search(this.regExp)>=0?null:this.regExp;}var _18={};var n=this.terms.length;for(var i=0;i<this.terms.length;i++){var _1b=this.terms[i];if(!_1b.negate){_18[_1b.text]=true;}}var _1c=[];for(var t in _18){_1c.push("("+t.escapeRegExp()+")");}if(_1c.length==0){return null;}var _1e=_1c.join("|");return new RegExp(_1e,this.caseSensitive?"mg":"img");};me.toString=function(){if(this.regExp){return this.regExp.toString();}var _1f="";for(var i=0;i<this.terms.length;i++){_1f+=this.terms[i].toString();}return _1f;};STQ.Term=function(_21,_22,_23,_24,_25,_26,_27,_28){this.text=_21;this.inTitle=_22;this.inText=_23;this.inTag=_24;this.negate=_25;this.orFollows=_26;this.caseSensitive=_27;this.wordMatch=_28;var _29=_21.escapeRegExp();if(this.wordMatch){_29="\s\sb"+_29+"\s\sb";}this.regExp=new RegExp(_29,"m"+(_27?"":"i"));};STQ.Term.prototype.toString=function(){return (this.negate?"-":"")+(this.inTitle?"!":"")+(this.inText?"%":"")+(this.inTag?"#":"")+(this.wordMatch?"=":"")+"\s""+this.text+"\s""+(this.orFollows?" OR ":" AND ");};STQ.Term.prototype.matchesTiddler=function(_2a){if(!_2a){return false;}if(this.inTitle&&this.regExp.test(_2a.title)){return !this.negate;}if(this.inText&&this.regExp.test(_2a.text)){return !this.negate;}if(this.inTag){var _2b=_2a.tags;if(_2b){for(var i=0;i<_2b.length;i++){if(this.regExp.test(_2b[i])){return !this.negate;}}}}return this.negate;};var stringToInt=function(s,_2e){if(!s){return _2e;}var n=parseInt(s);return (n==NaN)?_2e:n;};var getIntAttribute=function(_30,_31,_32){return stringToInt(_30.getAttribute(_31));};var isDescendantOrSelf=function(_33,e){while(e!=null){if(_33==e){return true;}e=e.parentNode;}return false;};var getMatchCount=function(s,re){var m=s.match(re);return m?m.length:0;};var createEllipsis=function(_38){var e=createTiddlyElement(_38,"span");e.innerHTML="&hellip;";};var isWordChar=function(c){return (c>="a"&&c<="z")||(c>="A"&&c<="Z")||c=="_";};var getWordBounds=function(s,_3c){if(!isWordChar(s[_3c])){return null;}for(var i=_3c-1;i>=0&&isWordChar(s[i]);i--){}var _3e=i+1;var n=s.length;for(i=_3c+1;i<n&&isWordChar(s[i]);i++){}return {start:_3e,end:i};};var removeTextDecoration=function(s){var _41=["''","{{{","}}}","//","<<<","/***","***/"];var _42="";for(var i=0;i<_41.length;i++){if(i!=0){_42+="|";}_42+="("+_41[i].escapeRegExp()+")";}return s.replace(new RegExp(_42,"mg"),"").trim();};var logText="";var lastLogTime=null;var logMessage=function(_44,s){var now=new Date();var _47=lastLogTime?(now-lastLogTime).toString():"";logText+="<tr><td>"+now.convertToYYYYMMDDHHMMSSMMM()+"</td><td align='right'>"+_47+"</td><td>"+_44+"</td><td>"+s.htmlEncode()+"</td></tr>\sn";lastLogTime=now;};function writeLog(){var t=" <<JsDoIt 'WriteLog' 'WriteLog' 'javascript:writeLog();story.closeTiddler(\s"Log\s");story.displayTiddler(null,\s"Log\s");'>>"+"<html><table><tbody><tr><th>Time</th><th>Delta (ms)</th><th>Kind</th><th>Message</th></tr>\sn"+logText+"</tbody></table></html>";store.saveTiddler("Log","Log",t,config.options.txtUserName,new Date(),["System","Log"]);logText="";lastLogTime=null;}var yourSearchResultID="yourSearchResult";var yourSearchResultItemsID="yourSearchResultItems";var maxCharsInTitle=80;var maxCharsInTags=50;var maxCharsInText=250;var maxPagesInNaviBar=10;var itemsPerPageDefault=25;var itemsPerPageWithPreviewDefault=10;var minMatchWithContextSize=40;var maxMovementForWordCorrection=4;var matchInTitleWeight=4;var precisionInTitleWeight=10;var matchInTagsWeight=2;var resultElement;var lastResults;var lastQuery;var lastSearchText;var searchInputField;var searchButton;var firstIndexOnPage=0;var currentTiddler;var indexInPage;var indexInResult;var getItemsPerPage=function(){var n=(config.options.chkPreviewText)?stringToInt(config.options.txtItemsPerPageWithPreview,itemsPerPageWithPreviewDefault):stringToInt(config.options.txtItemsPerPage,itemsPerPageDefault);return (n>0)?n:1;};var standardRankFunction=function(_4a,_4b){var _4c=_4b.getMarkRegExp();if(!_4c){return 1;}var _4d=_4a.title.match(_4c);var _4e=_4d?_4d.length:0;var _4f=getMatchCount(_4a.getTags(),_4c);var _50=_4d?_4d.join("").length:0;var _51=_4a.title.length>0?_50/_4a.title.length:0;var _52=_4e*matchInTitleWeight+_4f*matchInTagsWeight+_51*precisionInTitleWeight+1;return _52;};var findMatches=function(_53,_54,_55,_56,_57,_58){lastSearchText=_54;var _59=_53.reverseLookup("tags",_58,false);var _5a=new STQ(_54,_55,false,_56);lastQuery=_5a;var _5b=_5a.getMatchingTiddlers(_59);var _5c=abego.YourSearch.getRankFunction();for(var i=0;i<_5b.length;i++){var _5e=_5b[i];var _5f=_5c(_5e,_5a);_5e.searchRank=_5f;}if(!_57){_57="title";}var _60=function(a,b){var _63=a.searchRank-b.searchRank;if(_63==0){if(a[_57]==b[_57]){return (0);}else{return (a[_57]<b[_57])?-1:+1;}}else{return (_63>0)?-1:+1;}};_5b.sort(_60);lastResults=_5b;return _5b;};var moveToWordBorder=function(s,_65,_66){var _67;if(_66){_67=getWordBounds(s,_65);}else{if(_65<=0){return _65;}_67=getWordBounds(s,_65-1);}if(!_67){return _65;}if(_66){if(_67.start>=_65-maxMovementForWordCorrection){return _67.start;}if(_67.end<=_65+maxMovementForWordCorrection){return _67.end;}}else{if(_67.end<=_65+maxMovementForWordCorrection){return _67.end;}if(_67.start>=_65-maxMovementForWordCorrection){return _67.start;}}return _65;};var getContextRangeAround=function(s,_69,_6a,_6b,_6c){var _6d=Math.max(Math.floor(_6c/(_6b+1)),minMatchWithContextSize);var _6e=Math.max(_6d-(_6a-_69),0);var _6f=Math.min(Math.floor(_6a+_6e/3),s.length);var _70=Math.max(_6f-_6d,0);_70=moveToWordBorder(s,_70,true);_6f=moveToWordBorder(s,_6f,false);return {start:_70,end:_6f};};var getTextAndMatchArray=function(s,_72){var _73=[];if(_72){var _74=0;var n=s.length;var _76=0;do{_72.lastIndex=_74;var _77=_72.exec(s);if(_77){if(_74<_77.index){var t=s.substring(_74,_77.index);_73.push({text:t});}_73.push({text:_77[0],isMatch:true});_74=_77.index+_77[0].length;}else{_73.push({text:s.substr(_74)});break;}}while(true);}else{_73.push({text:s});}return _73;};var simpleCreateLimitedTextWithMarks=function(_79,s,_7b){if(!lastQuery){return;}var _7c=getTextAndMatchArray(s,lastQuery.getMarkRegExp());var _7d=0;for(var i=0;i<_7c.length&&_7d<_7b;i++){var t=_7c[i];var _80=t.text;if(t.isMatch){createTiddlyElement(_79,"span",null,"marked",_80);}else{var _81=_7b-_7d;if(_81<_80.length){_80=_80.substring(0,_81)+"...";}createTiddlyText(_79,_80);}_7d+=_80.length;}};var addRange=function(_82,_83,_84){var n=_82.length;if(n==0){_82.push({start:_83,end:_84});return;}var i=0;for(;i<n;i++){var _87=_82[i];if(_87.start<=_84&&_83<=_87.end){var r;var _89=i+1;for(;_89<n;_89++){r=_82[_89];if(r.start>_84||_83>_87.end){break;}}var _8a=_83;var _8b=_84;for(var j=i;j<_89;j++){r=_82[j];_8a=Math.min(_8a,r.start);_8b=Math.max(_8b,r.end);}_82.splice(i,_89-i,{start:_8a,end:_8b});return;}if(_87.start>_84){break;}}_82.splice(i,0,{start:_83,end:_84});};var getTotalRangesSize=function(_8d){var _8e=0;for(var i=0;i<_8d.length;i++){var _90=_8d[i];_8e+=_90.end-_90.start;}return _8e;};var writeTextAndMatchRange=function(_91,s,_93,_94,_95){var t;var _97;var pos=0;var i=0;var _9a=0;for(;i<_93.length;i++){t=_93[i];_97=t.text;if(_94<pos+_97.length){_9a=_94-pos;break;}pos+=_97.length;}var _9b=_95-_94;for(;i<_93.length&&_9b>0;i++){t=_93[i];_97=t.text.substr(_9a);_9a=0;if(_97.length>_9b){_97=_97.substr(0,_9b);}if(t.isMatch){createTiddlyElement(_91,"span",null,"marked",_97);}else{createTiddlyText(_91,_97);}_9b-=_97.length;}if(_95<s.length){createEllipsis(_91);}};var getMatchedTextCount=function(_9c){var _9d=0;for(var i=0;i<_9c.length;i++){if(_9c[i].isMatch){_9d++;}}return _9d;};var getMatchedTextWithContextRanges=function(_9f,s,_a1){var _a2=[];var _a3=getMatchedTextCount(_9f);var pos=0;for(var i=0;i<_9f.length;i++){var t=_9f[i];var _a7=t.text;if(t.isMatch){var _a8=getContextRangeAround(s,pos,pos+_a7.length,_a3,_a1);addRange(_a2,_a8.start,_a8.end);}pos+=_a7.length;}return _a2;};var fillUpRanges=function(s,_aa,_ab){var _ac=_ab-getTotalRangesSize(_aa);while(_ac>0){if(_aa.length==0){addRange(_aa,0,moveToWordBorder(s,_ab,false));return;}else{var _ad=_aa[0];var _ae;var _af;if(_ad.start==0){_ae=_ad.end;if(_aa.length>1){_af=_aa[1].start;}else{addRange(_aa,_ae,moveToWordBorder(s,_ae+_ac,false));return;}}else{_ae=0;_af=_ad.start;}var _b0=Math.min(_af,_ae+_ac);addRange(_aa,_ae,_b0);_ac-=(_b0-_ae);}}};var writeRanges=function(_b1,s,_b3,_b4,_b5){if(_b4.length==0){return;}if(_b4[0].start>0){createEllipsis(_b1);}var _b6=_b5;for(var i=0;i<_b4.length&&_b6>0;i++){var _b8=_b4[i];var len=Math.min(_b8.end-_b8.start,_b6);writeTextAndMatchRange(_b1,s,_b3,_b8.start,_b8.start+len);_b6-=len;}};var createLimitedTextWithMarksAndContext=function(_ba,s,_bc){if(!lastQuery){return;}if(s.length<_bc){_bc=s.length;}var _bd=getTextAndMatchArray(s,lastQuery.getMarkRegExp());var _be=getMatchedTextWithContextRanges(_bd,s,_bc);fillUpRanges(s,_be,_bc);writeRanges(_ba,s,_bd,_be,_bc);};var createLimitedTextWithMarks=function(_bf,s,_c1){return createLimitedTextWithMarksAndContext(_bf,s,_c1);};var myStorySearch=function(_c2,_c3,_c4){highlightHack=new RegExp(_c4?_c2:_c2.escapeRegExp(),_c3?"mg":"img");var _c5=findMatches(store,_c2,_c3,_c4,"title","excludeSearch");firstIndexOnPage=0;showResult();highlightHack=null;};var myMacroSearchHandler=function(_c6,_c7,_c8){var _c9="";var _ca=null;var _cb=function(txt){if(config.options.chkUseYourSearch){myStorySearch(txt.value,config.options.chkCaseSensitiveSearch,config.options.chkRegExpSearch);}else{story.search(txt.value,config.options.chkCaseSensitiveSearch,config.options.chkRegExpSearch);}_c9=txt.value;};var _cd=function(e){_cb(searchInputField);return false;};var _cf=function(e){if(!e){var e=window.event;}switch(e.keyCode){case 13:_cb(this);break;case 27:if(isResultOpen()){closeResult();}else{this.value="";clearMessage();}break;}if(String.fromCharCode(e.keyCode)==this.accessKey||e.altKey){reopenResultIfApplicable();}if(this.value.length<3&&_ca){clearTimeout(_ca);}if((this.value.length>2)&&(this.value!=_c9)){if(!config.options.chkUseYourSearch||config.options.chkSearchAsYouType){if(_ca){clearTimeout(_ca);}var txt=this;_ca=setTimeout(function(){_cb(txt);},500);}}if(this.value.length==0){closeResult();}};var _d3=function(e){this.select();reopenResultIfApplicable();};var btn=createTiddlyButton(_c6,this.label,this.prompt,_cd);var txt=createTiddlyElement(_c6,"input",null,null,null);if(_c8[0]){txt.value=_c8[0];}txt.onkeyup=_cf;txt.onfocus=_d3;txt.setAttribute("size",this.sizeTextbox);txt.setAttribute("accessKey",this.accessKey);txt.setAttribute("autocomplete","off");if(config.browser.isSafari){txt.setAttribute("type","search");txt.setAttribute("results","5");}else{txt.setAttribute("type","text");}searchInputField=txt;searchButton=btn;};var isResultOpen=function(){return resultElement!=null&&resultElement.parentNode==document.body;};var closeResult=function(){if(isResultOpen()){document.body.removeChild(resultElement);}};var openAllFoundTiddlers=function(){closeResult();if(lastResults){var _d7=[];for(var i=0;i<lastResults.length;i++){_d7.push(lastResults[i].title);}story.displayTiddlers(null,_d7);}};var refreshResult=function(){if(!resultElement||!searchInputField){return;}var _d9=store.getTiddlerText("YourSearchResultTemplate");if(!_d9){_d9="<b>Tiddler YourSearchResultTemplate not found</b>";}resultElement.innerHTML=_d9;firstIndexOnPage=Math.floor(firstIndexOnPage/getItemsPerPage())*getItemsPerPage();applyHtmlMacros(resultElement,null);refreshElements(resultElement,null);if(lastResults&&lastResults.length>0){var _da=store.getTiddlerText("YourSearchItemTemplate");if(!_da){alertAndThrow("YourSearchItemTemplate not found");}var _db=document.getElementById(yourSearchResultItemsID);if(!_db){_db=createTiddlyElement(resultElement,"div",yourSearchResultItemsID);}var _dc=Math.min(firstIndexOnPage+getItemsPerPage(),lastResults.length);indexInPage=-1;for(var i=firstIndexOnPage;i<_dc;i++){currentTiddler=lastResults[i];indexInPage++;indexInResult=i;var _de=createTiddlyElement(_db,"div",null,"yourSearchItem");_de.innerHTML=_da;applyHtmlMacros(_de,null);refreshElements(_de,null);}}currentTiddler=null;ensureResultIsDisplayedNicely();};var ensureResultIsDisplayedNicely=function(){adjustResultPositionAndSize();scrollVisible();};var scrollVisible=function(){if(resultElement){window.scrollTo(0,ensureVisible(resultElement));}if(searchInputField){window.scrollTo(0,ensureVisible(searchInputField));}};var adjustResultPositionAndSize=function(){if(!searchInputField){return;}var _df=searchInputField;var _e0=findPosX(_df);var _e1=findPosY(_df);var _e2=_df.offsetHeight;var _e3=_e0;var _e4=_e1+_e2;var _e5=findWindowWidth();if(_e5<resultElement.offsetWidth){resultElement.style.width=(_e5-100)+"px";_e5=findWindowWidth();}var _e6=resultElement.offsetWidth;if(_e3+_e6>_e5){_e3=_e5-_e6-30;}if(_e3<0){_e3=0;}resultElement.style.left=_e3+"px";resultElement.style.top=_e4+"px";resultElement.style.display="block";};var showResult=function(){if(!resultElement){resultElement=createTiddlyElement(document.body,"div",yourSearchResultID,"yourSearchResult");}else{if(resultElement.parentNode!=document.body){document.body.appendChild(resultElement);}}refreshResult();};var reopenResultIfApplicable=function(){if(searchInputField==null||!config.options.chkUseYourSearch){return;}if((searchInputField.value==lastSearchText)&&lastSearchText&&!isResultOpen()){if(resultElement&&(resultElement.parentNode!=document.body)){document.body.appendChild(resultElement);ensureResultIsDisplayedNicely();}else{showResult();}}};var setFirstIndexOnPage=function(_e7){if(!lastResults||lastResults.length==0){return;}firstIndexOnPage=Math.min(Math.max(0,_e7),lastResults.length-1);refreshResult();};var onDocumentClick=function(e){if(e.target==searchInputField){return;}if(e.target==searchButton){return;}if(resultElement&&isDescendantOrSelf(resultElement,e.target)){return;}closeResult();};var onDocumentKeyup=function(e){if(e.keyCode==27){closeResult();}};addEvent(document,"click",onDocumentClick);addEvent(document,"keyup",onDocumentKeyup);config.macros.yourSearch={label:"yourSearch",prompt:"Gives access to the current/last YourSearch result",funcs:{},tests:{"true":function(){return true;},"false":function(){return false;},"found":function(){return lastResults&&lastResults.length>0;},"previewText":function(){return config.options.chkPreviewText;}}};config.macros.yourSearch.handler=function(_ea,_eb,_ec,_ed,_ee,_ef){if(_ec.length==0){return;}var _f0=_ec[0];var _f1=config.macros.yourSearch.funcs[_f0];if(_f1){_f1(_ea,_eb,_ec,_ed,_ee,_ef);}};config.macros.yourSearch.funcs.itemRange=function(_f2){if(lastResults){var _f3=Math.min(firstIndexOnPage+getItemsPerPage(),lastResults.length);var s="%0 - %1".format([firstIndexOnPage+1,_f3]);createTiddlyText(_f2,s);}};config.macros.yourSearch.funcs.count=function(_f5){if(lastSearchText){createTiddlyText(_f5,lastResults.length.toString());}};config.macros.yourSearch.funcs.query=function(_f6){if(lastResults){createTiddlyText(_f6,lastSearchText);}};config.macros.yourSearch.funcs.version=function(_f7){var t="YourSearch %0.%1.%2".format([version.extensions.YourSearchPlugin.major,version.extensions.YourSearchPlugin.minor,version.extensions.YourSearchPlugin.revision]);var e=createTiddlyElement(_f7,"a");e.setAttribute("href","http://tiddlywiki.abego-software.de/#YourSearchPlugin");e.innerHTML="<font color=\s"black\s" face=\s"Arial, Helvetica, sans-serif\s">"+t+"<font>";};config.macros.yourSearch.funcs.copyright=function(_fa){var e=createTiddlyElement(_fa,"a");e.setAttribute("href","http://tiddlywiki.abego-software.de");e.innerHTML="<font color=\s"black\s" face=\s"Arial, Helvetica, sans-serif\s">&copy; 2005-2006 <b><font color=\s"red\s">abego</font></b> Software<font>";};config.macros.yourSearch.funcs.linkButton=function(_fc,_fd,_fe,_ff,_100,_101){if(_fe<2){return;}var _102=_fe[1];var text=_fe<3?_102:_fe[2];var _104=_fe<4?text:_fe[3];var _105=_fe<5?null:_fe[4];var btn=createTiddlyButton(_fc,text,_104,closeResultAndDisplayTiddler,null,null,_105);btn.setAttribute("tiddlyLink",_102);};config.macros.yourSearch.funcs.closeButton=function(_107,_108,_109,_10a,_10b,_10c){var _10d=createTiddlyButton(_107,"close","Close the Search Results (Shortcut: ESC)",closeResult);};config.macros.yourSearch.funcs.openAllButton=function(_10e,_10f,_110,_111,_112,_113){if(!lastResults){return;}var n=lastResults.length;if(n==0){return;}var _115=n==1?"open tiddler":"open all %0 tiddlers".format([n]);var _116=createTiddlyButton(_10e,_115,"Open all found tiddlers (Shortcut: Alt-O)",openAllFoundTiddlers);_116.setAttribute("accessKey","O");};var onNaviButtonClick=function(e){if(!e){var e=window.event;}var _119=getIntAttribute(this,"page");setFirstIndexOnPage(_119*getItemsPerPage(),0);};config.macros.yourSearch.funcs.naviBar=function(_11a,_11b,_11c,_11d,_11e,_11f){if(!lastResults||lastResults.length==0){return;}var _120;var _121=Math.floor(firstIndexOnPage/getItemsPerPage());var _122=Math.floor((lastResults.length-1)/getItemsPerPage());if(_121>0){_120=createTiddlyButton(_11a,"Previous","Go to previous page (Shortcut: Alt-'<')",onNaviButtonClick,"prev");_120.setAttribute("page",(_121-1).toString());_120.setAttribute("accessKey","<");}for(var i=-maxPagesInNaviBar;i<maxPagesInNaviBar;i++){var _124=_121+i;if(_124<0){continue;}if(_124>_122){break;}var _125=(i+_121+1).toString();var _126=_124==_121?"currentPage":"otherPage";_120=createTiddlyButton(_11a,_125,"Go to page %0".format([_125]),onNaviButtonClick,_126);_120.setAttribute("page",(_124).toString());}if(_121<_122){_120=createTiddlyButton(_11a,"Next","Go to next page (Shortcut: Alt-'>')",onNaviButtonClick,"next");_120.setAttribute("page",(_121+1).toString());_120.setAttribute("accessKey",">");}};config.macros.yourSearch.funcs["if"]=function(_127,_128,_129,_12a,_12b,_12c){if(_129.length<2){return;}var _12d=_129[1];var _12e=(_12d=="not");if(_12e){if(_129.length<3){return;}_12d=_129[2];}var test=config.macros.yourSearch.tests[_12d];var _130=false;try{if(test){_130=test(_127,_128,_129,_12a,_12b,_12c)!=_12e;}else{_130=(!eval(_12d))==_12e;}}catch(ex){}if(!_130){_127.style.display="none";}};var createOptionWithRefresh=function(_131,_132,_133,_134){invokeMacro(_131,"option",_132,_133,_134);var elem=_131.lastChild;var _136=elem.onclick;elem.onclick=function(e){var _138=_136.apply(this,arguments);refreshResult();return _138;};return elem;};config.macros.yourSearch.funcs.chkPreviewText=function(_139,_13a,_13b,_13c,_13d,_13e){var _13f=_13b.slice(1).join(" ");var elem=createOptionWithRefresh(_139,"chkPreviewText",_13c,_13e);elem.setAttribute("accessKey","P");elem.title="Show text preview of found tiddlers (Shortcut: Alt-P)";return elem;};config.macros.foundTiddler={label:"foundTiddler",prompt:"Provides information on the tiddler currently processed on the YourSearch result page",funcs:{}};config.macros.foundTiddler.handler=function(_141,_142,_143,_144,_145,_146){if(!currentTiddler){return;}var name=_143[0];var func=config.macros.foundTiddler.funcs[name];if(func){func(_141,_142,_143,_144,_145,_146);}};var closeResultAndDisplayTiddler=function(e){closeResult();var _14a=this.getAttribute("tiddlyLink");if(_14a){var _14b=this.getAttribute("withHilite");var _14c=highlightHack;if(_14b&&_14b=="true"&&lastQuery){highlightHack=lastQuery.getMarkRegExp();}story.displayTiddler(this,_14a);highlightHack=_14c;}return (false);};var getShortCutNumber=function(){if(!currentTiddler){return -1;}if(indexInPage>=0&&indexInPage<=9){return indexInPage<9?(indexInPage+1):0;}else{return -1;}};config.macros.foundTiddler.funcs.title=function(_14d,_14e,_14f,_150,_151,_152){if(!currentTiddler){return;}var _153=getShortCutNumber();var _154=_153>=0?"Open tiddler (Shortcut: Alt-%0)".format([_153.toString()]):"Open tiddler";var btn=createTiddlyButton(_14d,null,_154,closeResultAndDisplayTiddler,null);btn.setAttribute("tiddlyLink",currentTiddler.title);btn.setAttribute("withHilite","true");createLimitedTextWithMarks(btn,currentTiddler.title,maxCharsInTitle);if(_153>=0){btn.setAttribute("accessKey",_153.toString());}};config.macros.foundTiddler.funcs.tags=function(_156,_157,_158,_159,_15a,_15b){if(!currentTiddler){return;}createLimitedTextWithMarks(_156,currentTiddler.getTags(),maxCharsInTags);};config.macros.foundTiddler.funcs.text=function(_15c,_15d,_15e,_15f,_160,_161){if(!currentTiddler){return;}createLimitedTextWithMarks(_15c,removeTextDecoration(currentTiddler.text),maxCharsInText);};config.macros.foundTiddler.funcs.number=function(_162,_163,_164,_165,_166,_167){var _168=getShortCutNumber();if(_168>=0){var text="%0)".format([_168.toString()]);createTiddlyElement(_162,"span",null,"shortcutNumber",text);}};function scrollToAnchor(name){return false;}if(config.options.chkUseYourSearch==undefined){config.options.chkUseYourSearch=true;}if(config.options.chkPreviewText==undefined){config.options.chkPreviewText=true;}if(config.options.chkSearchAsYouType==undefined){config.options.chkSearchAsYouType=true;}if(config.options.chkSearchInTitle==undefined){config.options.chkSearchInTitle=true;}if(config.options.chkSearchInText==undefined){config.options.chkSearchInText=true;}if(config.options.chkSearchInTags==undefined){config.options.chkSearchInTags=true;}if(config.options.txtItemsPerPage==undefined){config.options.txtItemsPerPage=itemsPerPageDefault;}if(config.options.txtItemsPerPageWithPreview==undefined){config.options.txtItemsPerPageWithPreview=itemsPerPageWithPreviewDefault;}config.shadowTiddlers.AdvancedOptions+="\sn<<option chkUseYourSearch>> Use 'Your Search' //([[more options|YourSearch Options]])//";config.shadowTiddlers["YourSearch Introduction"]="!About YourSearch\sn"+"\sn"+"YourSearch gives you a bunch of new features to simplify and speed up your daily searches in TiddlyWiki. It seamlessly integrates into the standard TiddlyWiki search: just start typing into the 'search' field and explore!\sn"+"\sn"+"''May the '~Alt-F' be with you.''\sn"+"\sn"+"\sn"+"!Features\sn"+"* YourSearch searches for tiddlers that match your query ''as you type'' into the 'search' field. It presents a list of the ''\s"Top Ten\s"'' tiddlers in a ''popup-like window'': the ''[[YourSearch Result]]''. The tiddlers currently displayed in your TiddlyWiki are not affected.\sn"+"* Using ''~TiddlerRank technology'' the [[YourSearch Result]] lists the ''most interesting tiddlers first''.\sn"+"* Through ''Filtered Search'' and ''Boolean Search'' you can easily refining your search, like excluding words or searching for multiple words. This way less tiddlers are displayed in the [[YourSearch Result]] and you can faster scan the result for the tiddler you are looking for.\sn"+"* The [[YourSearch Result]] lists the found tiddlers ''page-wise'', e.g. 10 per page. Use the ''Result Page Navigation Bar'' to navigate between pages if the result does not fit on one page.\sn"+"* The [[YourSearch Result]] states the ''total number of found tiddlers''. This way you can quickly decide if you want to browse the result list or if you want to refine your search first to shorten the result list.\sn"+"* Beside the ''title of the found tiddlers'' the [[YourSearch Result]] also ''displays tags'' and ''tiddler text previews''. The ''tiddler text preview'' is an extract of the tiddler's content, showing the most interesting parts related to your query (e.g. the texts around the words you are looking for).\sn"+"* The words you are looking for are hilited in the titles, tags and text previews of the [[YourSearch Result]].\sn"+"* If you are not interested in the tiddler text previews but prefer to get longer lists of tiddlers on one result page you may ''switch of the text preview''.\sn"+"* If the [[YourSearch Result]] contains the tiddler you are looking for you can just ''click its title to display'' it in your TiddlyWiki. Alternatively you may also ''open all found tiddlers'' at once. \sn"+"* Use [[YourSearch Options]] to customize YourSearch to your needs. E.g. depending on the size of your screen you may change the number of tiddlers displayed in the [[YourSearch Result]]. In the [[YourSearch Options]] and the AdvancedOptions you may also switch off YourSearch in case you temporarily want to use the standard search.\sn"+"* For the most frequently actions ''access keys'' are defined so you can perform your search without using the mouse.\sn"+"\sn";config.shadowTiddlers["YourSearch Help"]="<<tiddler [[YourSearch Introduction]]>>"+"\sn"+"!Filtered Search<html><a name='Filtered'/></html>\sn"+"Using the Filtered Search you can restrict your search to certain parts of a tiddler, e.g only search the tags or only the titles.\sn"+"|!What you want|!What you type|!Example|\sn"+"|Search ''titles only''|start word with ''!''|{{{!jonny}}}|\sn"+"|Search ''contents only''|start word with ''%''|{{{%football}}}|\sn"+"|Search ''tags only''|start word with ''#''|{{{#Plugin}}}|\sn"+"\sn"+"You may use more than one filter for a word. E.g. {{{!#Plugin}}} finds tiddlers containing \s"Plugin\s" either in the title or in the tags (but does not look for \s"Plugin\s" in the content).\sn"+"\sn"+"!Boolean Search<html><a name='Boolean'/></html>\sn"+"The Boolean Search is useful when searching for multiple words.\sn"+"|!What you want|!What you type|!Example|\sn"+"|''All words'' must exist|List of words|{{{jonny jeremy}}}|\sn"+"|''At least one word'' must exist|Separate words by ''or''|{{{jonny or jeremy}}}|\sn"+"|A word ''must not exist''|Start word with ''-''|{{{-jonny}}}|\sn"+"\sn"+"''Note:'' When you specify two words, separated with a space, YourSearch finds all tiddlers that contain both words, but not necessarily next to each other. If you want to find a sequence of word, e.g. '{{{John Brown}}}', you need to put the words into quotes. I.e. you type: {{{\s"john brown\s"}}}.\sn"+"\sn"+"!'Exact Word' Search<html><a name='Exact'/></html>\sn"+"By default a search result all matches that 'contain' the searched text. \sn"+" E.g. if you search for 'Task' you will get all tiddlers containing 'Task', but also 'CompletedTask', 'TaskForce' etc.\sn"+"\sn"+"If you only want to get the tiddlers that contain 'exactly the word' you need to prefix it with a '='. E.g. typing '=Task' will the tiddlers that contain the word 'Task', ignoring words that just contain 'Task' as a substring.\sn"+"\sn"+"!Combined Search<html><a name='Combined'/></html>\sn"+"You are free to combine the various search options. \sn"+"\sn"+"''Examples''\sn"+"|!What you type|!Result|\sn"+"|{{{!jonny !jeremy -%football}}}| all tiddlers with both {{{jonny}}} and {{{jeremy}}} in its titles, but no {{{football}}} in content.|\sn"+"|{{{#=Task}}}|All tiddlers tagged with 'Task' (the exact word). Tags named 'CompletedTask', 'TaskForce' etc. are not considered.|\sn"+"\sn"+"!~CaseSensitiveSearch and ~RegExpSearch<html><a name='Case'/></html>\sn"+"The standard search options ~CaseSensitiveSearch and ~RegExpSearch are fully supported by YourSearch. However when ''~RegExpSearch'' is on Filtered and Boolean Search are disabled.\sn"+"\sn"+"!Access Keys<html><a name='Access'/></html>\sn"+"You are encouraged to use the access keys (also called \s"shortcut\s" keys) for the most frequently used operations. For quick reference these shortcuts are also mentioned in the tooltip for the various buttons etc.\sn"+"\sn"+"|!Key|!Operation|\sn"+"|{{{Alt-F}}}|''The most important keystroke'': It moves the cursor to the search input field so you can directly start typing your query. Pressing {{{Alt-F}}} will also display the previous search result. This way you can quickly display multiple tiddlers using \s"Press {{{Alt-F}}}. Select tiddler.\s" sequences.|\sn"+"|{{{ESC}}}|Closes the [[YourSearch Result]]. When the [[YourSearch Result]] is already closed and the cursor is in the search input field the field's content is cleared so you start a new query.|\sn"+"|{{{Alt-1}}}, {{{Alt-2}}},... |Pressing these keys opens the first, second etc. tiddler from the result list.|\sn"+"|{{{Alt-O}}}|Opens all found tiddlers.|\sn"+"|{{{Alt-P}}}|Toggles the 'Preview Text' mode.|\sn"+"|{{{Alt-'<'}}}, {{{Alt-'>'}}}|Displays the previous or next page in the [[YourSearch Result]].|\sn"+"|{{{Return}}}|When you have turned off the 'as you type' search mode pressing the {{{Return}}} key actually starts the search (as does pressing the 'search' button).|\sn"+"\sn";config.shadowTiddlers["YourSearch Options"]="|>|!YourSearch Options|\sn"+"|>|<<option chkUseYourSearch>> Use 'Your Search'|\sn"+"|!|<<option chkPreviewText>> Show Text Preview|\sn"+"|!|<<option chkSearchAsYouType>> 'Search As You Type' Mode (No RETURN required to start search)|\sn"+"|!|Default Search Filter:<<option chkSearchInTitle>>Titles ('!') <<option chkSearchInText>>Texts ('%') <<option chkSearchInTags>>Tags ('#') <html><br><font size=\s"-2\s">The parts of a tiddlers that are searched when you don't explicitly specify a filter in the search text (using a '!', '%' or '#' prefix).</font></html>|\sn"+"|!|Number of items on search result page: <<option txtItemsPerPage>>|\sn"+"|!|Number of items on search result page with preview text: <<option txtItemsPerPageWithPreview>>|\sn";config.shadowTiddlers["YourSearchStyleSheet"]="/***\sn"+"!~YourSearchResult Stylesheet\sn"+"***/\sn"+"/*{{{*/\sn"+".yourSearchResult {\sn"+"\stposition: absolute;\sn"+"\stwidth: 800px;\sn"+"\sn"+"\stpadding: 0.2em;\sn"+"\stlist-style: none;\sn"+"\stmargin: 0;\sn"+"\sn"+"\stbackground: White;\sn"+"\stborder: 1px solid DarkGray;\sn"+"}\sn"+"\sn"+"/*}}}*/\sn"+"/***\sn"+"!!Summary Section\sn"+"***/\sn"+"/*{{{*/\sn"+".yourSearchResult .summary {\sn"+"\stborder-bottom-width: thin;\sn"+"\stborder-bottom-style: solid;\sn"+"\stborder-bottom-color: #999999;\sn"+"\stpadding-bottom: 4px;\sn"+"}\sn"+"\sn"+".yourSearchRange, .yourSearchCount, .yourSearchQuery {\sn"+"\stfont-weight: bold;\sn"+"}\sn"+"\sn"+".yourSearchResult .summary .button {\sn"+"\stfont-size: 10px;\sn"+"\sn"+"\stpadding-left: 0.3em;\sn"+"\stpadding-right: 0.3em;\sn"+"}\sn"+"\sn"+".yourSearchResult .summary .chkBoxLabel {\sn"+"\stfont-size: 10px;\sn"+"\sn"+"\stpadding-right: 0.3em;\sn"+"}\sn"+"\sn"+"/*}}}*/\sn"+"/***\sn"+"!!Items Area\sn"+"***/\sn"+"/*{{{*/\sn"+".yourSearchResult .marked {\sn"+"\stbackground: none;\sn"+"\stfont-weight: bold;\sn"+"}\sn"+"\sn"+".yourSearchItem {\sn"+"\stmargin-top: 2px;\sn"+"}\sn"+"\sn"+".yourSearchNumber {\sn"+"\stcolor: #808080;\sn"+"}\sn"+"\sn"+"\sn"+".yourSearchTags {\sn"+"\stcolor: #008000;\sn"+"}\sn"+"\sn"+".yourSearchText {\sn"+"\stcolor: #808080;\sn"+"\stmargin-bottom: 6px;\sn"+"}\sn"+"\sn"+"/*}}}*/\sn"+"/***\sn"+"!!Footer\sn"+"***/\sn"+"/*{{{*/\sn"+".yourSearchFooter {\sn"+"\stmargin-top: 8px;\sn"+"\stborder-top-width: thin;\sn"+"\stborder-top-style: solid;\sn"+"\stborder-top-color: #999999;\sn"+"}\sn"+"\sn"+".yourSearchFooter a:hover{\sn"+"\stbackground: none;\sn"+"\stcolor: none;\sn"+"}\sn"+"/*}}}*/\sn"+"/***\sn"+"!!Navigation Bar\sn"+"***/\sn"+"/*{{{*/\sn"+".yourSearchNaviBar a {\sn"+"\stfont-size: 16px;\sn"+"\stmargin-left: 4px;\sn"+"\stmargin-right: 4px;\sn"+"\stcolor: black;\sn"+"\sttext-decoration: underline;\sn"+"}\sn"+"\sn"+".yourSearchNaviBar a:hover {\sn"+"\stbackground-color: none;\sn"+"}\sn"+"\sn"+".yourSearchNaviBar .prev {\sn"+"\stfont-weight: bold;\sn"+"\stcolor: blue;\sn"+"}\sn"+"\sn"+".yourSearchNaviBar .currentPage {\sn"+"\stcolor: #FF0000;\sn"+"\stfont-weight: bold;\sn"+"\sttext-decoration: none;\sn"+"}\sn"+"\sn"+".yourSearchNaviBar .next {\sn"+"\stfont-weight: bold;\sn"+"\stcolor: blue;\sn"+"}\sn"+"/*}}}*/\sn";config.shadowTiddlers["YourSearchResultTemplate"]="<!--\sn"+"{{{\sn"+"-->\sn"+"<span macro=\s"yourSearch if found\s">\sn"+"<!-- The Summary Header ============================================ -->\sn"+"<table class=\s"summary\s" border=\s"0\s" width=\s"100%\s" cellspacing=\s"0\s" cellpadding=\s"0\s"><tbody>\sn"+" <tr>\sn"+"\st<td align=\s"left\s">\sn"+"\st\stYourSearch Result <span class=\s"yourSearchRange\s" macro=\s"yourSearch itemRange\s"></span>\sn"+"\st\st&nbsp;of&nbsp;<span class=\s"yourSearchCount\s" macro=\s"yourSearch count\s"></span>\sn"+"\st\stfor&nbsp;<span class=\s"yourSearchQuery\s" macro=\s"yourSearch query\s"></span>\sn"+"\st</td>\sn"+"\st<td class=\s"yourSearchButtons\s" align=\s"right\s">\sn"+"\st\st<span macro=\s"yourSearch chkPreviewText\s"></span><span class=\s"chkBoxLabel\s">preview text</span>\sn"+"\st\st<span macro=\s"yourSearch openAllButton\s"></span>\sn"+"\st\st<span macro=\s"yourSearch linkButton 'YourSearch Options' options 'Configure YourSearch'\s"></span>\sn"+"\st\st<span macro=\s"yourSearch linkButton 'YourSearch Help' help 'Get help how to use YourSearch'\s"></span>\sn"+"\st\st<span macro=\s"yourSearch closeButton\s"></span>\sn"+"\st</td>\sn"+" </tr>\sn"+"</tbody></table>\sn"+"\sn"+"<!-- The List of Found Tiddlers ============================================ -->\sn"+"<div id=\s"yourSearchResultItems\s" itemsPerPage=\s"25\s" itemsPerPageWithPreview=\s"10\s"></div>\sn"+"\sn"+"<!-- The Footer (with the Navigation) ============================================ -->\sn"+"<table class=\s"yourSearchFooter\s" border=\s"0\s" width=\s"100%\s" cellspacing=\s"0\s" cellpadding=\s"0\s"><tbody>\sn"+" <tr>\sn"+"\st<td align=\s"left\s">\sn"+"\st\stResult page: <span class=\s"yourSearchNaviBar\s" macro=\s"yourSearch naviBar\s"></span>\sn"+"\st</td>\sn"+"\st<td align=\s"right\s"><span macro=\s"yourSearch version\s"></span>, <span macro=\s"yourSearch copyright\s"></span>\sn"+"\st</td>\sn"+" </tr>\sn"+"</tbody></table>\sn"+"<!-- end of the 'tiddlers found' case =========================================== -->\sn"+"</span>\sn"+"\sn"+"\sn"+"<!-- The \s"No tiddlers found\s" case =========================================== -->\sn"+"<span macro=\s"yourSearch if not found\s">\sn"+"<table class=\s"summary\s" border=\s"0\s" width=\s"100%\s" cellspacing=\s"0\s" cellpadding=\s"0\s"><tbody>\sn"+" <tr>\sn"+"\st<td align=\s"left\s">\sn"+"\st\stYourSearch Result: No tiddlers found for <span class=\s"yourSearchQuery\s" macro=\s"yourSearch query\s"></span>.\sn"+"\st</td>\sn"+"\st<td class=\s"yourSearchButtons\s" align=\s"right\s">\sn"+"\st\st<span macro=\s"yourSearch linkButton 'YourSearch Options' options 'Configure YourSearch'\s"></span>\sn"+"\st\st<span macro=\s"yourSearch linkButton 'YourSearch Help' help 'Get help how to use YourSearch'\s"></span>\sn"+"\st\st<span macro=\s"yourSearch closeButton\s"></span>\sn"+"\st</td>\sn"+" </tr>\sn"+"</tbody></table>\sn"+"</span>\sn"+"\sn"+"\sn"+"<!--\sn"+"}}}\sn"+"-->\sn";config.shadowTiddlers["YourSearchItemTemplate"]="<!--\sn"+"{{{\sn"+"-->\sn"+"<span class='yourSearchNumber' macro='foundTiddler number'></span>\sn"+"<span class='yourSearchTitle' macro='foundTiddler title'/></span>&nbsp;-&nbsp;\sn"+"<span class='yourSearchTags' macro='foundTiddler tags'/></span>\sn"+"<span macro=\s"yourSearch if previewText\s"><div class='yourSearchText' macro='foundTiddler text'/></div></span>\sn"+"<!--\sn"+"}}}\sn"+"-->";config.shadowTiddlers["YourSearch"]="<<tiddler [[YourSearch Help]]>>";config.shadowTiddlers["YourSearch Result"]="The popup-like window displaying the result of a YourSearch query.";setStylesheet(store.getTiddlerText("YourSearchStyleSheet"),"yourSearch");var origMacros_search_handler=config.macros.search.handler;config.macros.search.handler=myMacroSearchHandler;var ownsOverwrittenFunctions=function(){var _16b=(config.macros.search.handler==myMacroSearchHandler);return _16b;};var checkForOtherHijacker=function(){if(!ownsOverwrittenFunctions()){alert("Message from YourSearchPlugin:\sn\sn\sn"+"Another plugin has disabled the 'Your Search' features.\sn\sn\sn"+"You may disable the other plugin or change the load order of \sn"+"the plugins (by changing the names of the tiddlers)\sn"+"to enable the 'Your Search' features.");}};setTimeout(checkForOtherHijacker,5000);abego.YourSearch.getStandardRankFunction=function(){return standardRankFunction;};abego.YourSearch.getRankFunction=function(){return abego.YourSearch.getStandardRankFunction();};abego.YourSearch.getCurrentTiddler=function(){return currentTiddler;};}\n/***\n%/\n!Licence and Copyright\nCopyright (c) abego Software ~GmbH, 2005-2006 ([[www.abego-software.de|http://www.abego-software.de]])\n\nRedistribution and use in source and binary forms, with or without modification,\nare permitted provided that the following conditions are met:\n\nRedistributions of source code must retain the above copyright notice, this\nlist of conditions and the following disclaimer.\n\nRedistributions in binary form must reproduce the above copyright notice, this\nlist of conditions and the following disclaimer in the documentation and/or other\nmaterials provided with the distribution.\n\nNeither the name of abego Software nor the names of its contributors may be\nused to endorse or promote products derived from this software without specific\nprior written permission.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY\nEXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES\nOF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT\nSHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,\nINCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED\nTO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR\nBUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN\nCONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN\nANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH\nDAMAGE.\n***/\n\n