Welcome to TiddlyWiki created by Jeremy Ruston, Copyright © 2007 UnaMesa Association
GTRIPPING.NET
|>|>|>|>|>|>| !May 2008 ||>|>|>|>|>|>| !June 2008 ||>|>|>|>|>|>| !July 2008 |\n| !Mo | !Tu | !We | !Th | !Fr | !Sa | ! Su |~| !Mo | !Tu | !We | !Th | !Fr | !Sa | !Su |~| !Mo | !Tu | !We | !Th | !Fr | !Sa | !Su |\n|bgcolor(#cccccc):|bgcolor(#cccccc):|bgcolor(#cccccc):|bgcolor(#cccc99): --1-- |bgcolor(#cccc99): --2-- |bgcolor(#cccc99): --3-- |bgcolor(#cccc99): --4-- |~|bgcolor(#cccccc):|bgcolor(#cccccc):|bgcolor(#cccccc):|bgcolor(#cccccc):|bgcolor(#cccccc):|bgcolor(#cccccc):|bgcolor(#a0ffa0): [[1|1st June 2008]] |~|bgcolor(#cccccc):|bgcolor(#ff6666): [[1|1st July 2008]] |bgcolor(#ff6666): [[2|2nd July 2008]] |bgcolor(#ff6666): [[3|3rd July 2008]] |bgcolor(#ff6666): [[4|4th July 2008]] |bgcolor(#ff6666): [[5|5th July 2008]] |bgcolor(#ff6666): [[6|6th July 2008]] |\n|bgcolor(#cccc99): --5-- |bgcolor(#cccc99): --6-- |bgcolor(#cccc99): --7-- |bgcolor(#cccc99): --8-- |bgcolor(#cccc99): --9-- |bgcolor(#cccc99): --10-- |bgcolor(#cccc99): --11-- |~|bgcolor(#a0ffa0): [[2|2nd June 2008]] |bgcolor(#a0ffa0): [[3|3rd June 2008]] |bgcolor(#a0ffa0): [[4|4th June 2008]] |bgcolor(#a0ffa0): [[5|5th June 2008]] |bgcolor(#a0ffa0): [[6|6th June 2008]] |bgcolor(#a0ffa0): [[7|7th June 2008]] |bgcolor(#a0ffa0): [[8|8th June 2008]] |~|bgcolor(#ff6666): [[7|7th July 2008]] |bgcolor(#ff6666): [[8|8th July 2008]] |bgcolor(#ff6666): [[9|9th July 2008]] |bgcolor(#ff6666): [[10|10th July 2008]] |bgcolor(#ff6666): [[11|11th July 2008]] |bgcolor(#a0ffa0): [[12|12th July 2008]] |bgcolor(#a0ffa0): [[13|13th July 2008]] |\n|bgcolor(#cccc99): --12-- |bgcolor(#cccc99): --13-- |bgcolor(#cccc99): --14-- |bgcolor(#cccc99): --15-- |bgcolor(#cccc99): --16-- |bgcolor(#cccc99): --17-- |bgcolor(#cccc99): --18-- |~|bgcolor(#a0ffa0): [[9|9th June 2008]] |bgcolor(#ff6666): [[10|10th June 2008]] |bgcolor(#ff6666): [[11|11th June 2008]] |bgcolor(#ff6666): [[12|12th June 2008]] |bgcolor(#ff6666): [[13|13th June 2008]] |bgcolor(#ff6666): [[14|14th June 2008]] |bgcolor(#ff6666): [[15|15th June 2008]] |~|bgcolor(#c0ffff): [[14|14th July 2008]] |bgcolor(#c0ffff): [[15|15th July 2008]] |bgcolor(#c0ffff): [[16|16th July 2008]] |bgcolor(#c0ffff): [[17|17th July 2008]] |bgcolor(#c0ffff): [[18|18th July 2008]] |bgcolor(#cccc99): --19-- |bgcolor(#cccc99): --20-- |\n|bgcolor(#cccc99): --19-- |bgcolor(#cccc99): --20-- |bgcolor(#cccc99): --21-- |bgcolor(#cccc99): --22-- |bgcolor(#cccc99): --23-- |bgcolor(#cccc99): --24-- |bgcolor(#cccc99): --25-- |~|bgcolor(#ff6666): [[16|16th June 2008]] |bgcolor(#ff6666): [[17|17th June 2008]] |bgcolor(#ff6666): [[18|18th June 2008]] |bgcolor(#ff6666): [[19|19th June 2008]] |bgcolor(#ff6666): [[20|20th June 2008]] |bgcolor(#ff6666): [[21|21st June 2008]] |bgcolor(#ff6666): [[22|22nd June 2008]] |~|bgcolor(#cccc99): --21-- |bgcolor(#cccc99): --22-- |bgcolor(#cccc99): --23-- |bgcolor(#cccc99): --24-- |bgcolor(#cccc99): --25-- |bgcolor(#cccc99): --26-- |bgcolor(#cccc99): --27-- |\n|bgcolor(#cccc99): --26-- |bgcolor(#cccc99): --27-- |bgcolor(#cccc99): --28-- |bgcolor(#cccc99): --29-- |bgcolor(#a0ffa0): [[30|30th May 2008]] |bgcolor(#a0ffa0): [[31|31st May 2008]] |bgcolor(#cccccc):|~|bgcolor(#ff6666): [[23|23rd June 2008]] |bgcolor(#ff6666): [[24|24th June 2008]] |bgcolor(#ff6666): [[25|25th June 2008]] |bgcolor(#ff6666): [[26|26th June 2008]] |bgcolor(#ff6666): [[27|27th June 2008]] |bgcolor(#ff6666): [[28|28th June 2008]] |bgcolor(#ff6666): [[29|29th June 2008]] |~|bgcolor(#cccc99): --28-- |bgcolor(#cccc99): --29-- |bgcolor(#cccc99): --30-- |bgcolor(#cccc99): --31-- |bgcolor(#cccccc):|bgcolor(#cccccc):|bgcolor(#cccccc):|\n|bgcolor(#cccccc):|bgcolor(#cccccc):|bgcolor(#cccccc):|bgcolor(#cccccc):|bgcolor(#cccccc):|bgcolor(#cccccc):|bgcolor(#cccccc):|~|bgcolor(#ff6666): [[30|30th June 2008]] |bgcolor(#cccccc):|bgcolor(#cccccc):|bgcolor(#cccccc):|bgcolor(#cccccc):|bgcolor(#cccccc):|bgcolor(#cccccc):|~|bgcolor(#cccccc):|bgcolor(#cccccc):|bgcolor(#cccccc):|bgcolor(#cccccc):|bgcolor(#cccccc):|bgcolor(#cccccc):|bgcolor(#cccccc):|\n|>|>|>|>|>|>|>|>|>|>|>|>|>|>|>|>|>|>|>|>|>|>| !Legend |\n|>|>|>|>|>|>|>|bgcolor(#a0ffa0): [[United Kingdom]] |>|>|>|>|>|>|>|bgcolor(#ff6666): [[Contiki Tour|Contiki]] |>|>|>|>|>|>|bgcolor(#c0ffff): [[Singapore]] |\n| [[Europe Map]] |c\n\n| [[G-Man's Must See List]] | [[Must See List]] | [[Brynn's Must See List]] |
Europe 2008 Planning Wiki //(only a little overboard...)//
[[Itinerary]]\n[[Blog]]
Itinerary
|>|>| __''Europe Map''__ |h\n| [img[images/maps/europe.jpg]] | ''[[Y|10th June 2008]]'' |''[[London]]'' |\n|~| ''[[B|11th June 2008]]'' |''[[Paris]]'' |\n|~| ''[[C|13th June 2008]]'' |''[[Bordeaux]]'' |\n|~| ''[[D|14th June 2008]]'' |''[[Biarritz]]'' |\n|~| ''[[E|14th June 2008]]'' |''[[Pamplona]]'' |\n|~| ''[[F|15th June 2008]]'' |''[[Zaragoza]]'' |\n|~| ''[[G|16th June 2008]]'' |''[[Barcelona]]'' |\n|~| ''[[H|17th June 2008]]'' |''[[Arles]]'' |\n|~| ''[[I|18th June 2008]]'' |''[[Nice]]'' |\n|~| ''[[J|19th June 2008]]'' |''[[Genoa]]'' |\n|~| ''[[K|19th June 2008]]'' |''[[Pisa]]'' |\n|~| ''[[L|20th June 2008]]'' |''[[Florence]]'' |\n|~| ''[[M|22nd June 2008]]'' |''[[Rome]]'' |\n|~| ''[[N|24th June 2008]]'' |''[[Naples]]'' |\n|~| ''[[O|25th June 2008]]'' |''Ferry to [[Corfu]]'' |\n|~| ''[[P|26th June 2008]]'' |''[[Corfu]]'' |\n|~| ''[[Q|1st July 2008]]'' |''[[Venice]]'' |\n|~| ''[[R|2nd July 2008]]'' |''[[Verona]]'' |\n|~| ''[[S|4th July 2008]]'' |''[[Vienna]]'' |\n|~| ''[[T|5th July 2008]]'' |''[[Munich]]'' |\n|~| ''[[U|6th July 2008]]'' |''[[Swiss Alps]]'' |\n|~| ''[[V|7th July 2008]]'' |''[[Swiss Alps]]'' |\n|~| ''[[W|8th July 2008]]'' |''[[Heidelberg]]'' |\n|~| ''[[X|10th July 2008]]'' |''[[Amsterdam]]'' |\n| It should be noted that the trip between point 'P' and 'Q' is via over night ferry and not over road as detailed on map |c
*Staying in [[Amsterdam]]\n''[[Contiki]]''\nA chance to visit [[Edam]] and take a bicycle tour of the [[Dutch]] countryside. Afterwards, time to explore [[Amsterdam]]. In your free time perhaps visit famous sights such as [[Anne Frank's House]] or the [[Van Gogh Museum]]. Tonight we celebrate our last evening together. (B)
*06:45am The 32 Day European Camping tour departs from the [[Contiki Basement]] at the [[Royal National Hotel]]\n*[[London]] to [[Paris]]\n*Staying in [[Paris]]\n\n''[[Contiki]]''\nA warm welcome from your Contiki Crew as we head for the [[White Cliffs of Dover]] and the Channel crossing to [[France]]. We drive past [[World War I]] battlefields to the splendour of [[Paris]]. ''(D)''\n\n[[Contiki Optional Excursions: Paris]]\n\n| [img[images/maps/london-paris.jpg]] |\n
*[[Amsterdam]] to [[London]]\n*Staying in [[London]] at [[Montana Excel]]\n\n''[[Contiki]]''\nTime to swap addresses and e-mail contacts as we travel through the [[Belgian]] countryside and back to [[Calais]] for our ferry crossing to [[England]]. ''(B)''\n\n| [img[images/maps/amsterdam-london.jpg]] |
*Staying in [[Paris]]\n''[[Contiki]]''\nTwo full days to see some of the most celebrated icons in [[Europe]]. The best way to experience the "City of Lights" is on our included [[Illuminations Tour]]. We also visit the majestic [[Château Versailles]] (entry not included), home to Louis XIV. In your free time take the opportunity to visit the [[Louvre]], [[Eiffel Tower]], [[Notre Dame]], [[Arc de Triomphe]] or the [[Champs-Élysées]]. Why not complete your Parisian experience with a French meal and a famous Parisian cabaret? ''(B,D) (B)''\n\n[[Contiki Optional Excursions: Paris]]
*[[Souvenir Group Photo]] (Euro 11.50)\n**A photo of you and all of your new friends is the perfect souvenir from your tour. The photo will be taken with a panorama of Florence in the background or in one of the city's famous piazzas.\n*[[Tuscan Dinner]] (Euro 20.00)\n**Tonight's restaurant is located right in the heart of Florence. Enjoy a traditional 3 course meal including pasta and a delicious main course - all washed down with some local wine.\n*[[Space Electronic Disco]] (Euro 12.00)\n**A chance to dance the night away at Florence's largest night-spot. Your first drink is included in the price and will get you started for an evening of fun. Enjoy the great music and maybe take the opportunity to show off your karaoke skill.
*Staying in [[London]] at [[Montana Excel]]
*Staying in [[Paris]]\n''[[Contiki]]''\nTwo full days to see some of the most celebrated icons in [[Europe]]. The best way to experience the "City of Lights" is on our included Illuminations Tour. We also visit the majestic [[Château Versailles]] (entry not included), home to Louis XIV. In your free time take the opportunity to visit the [[Louvre]], [[Eiffel Tower]], [[Notre Dame]], [[Arc de Triomphe]] or the [[Champs-Élysées]]. Why not complete your Parisian experience with a French meal and a famous Parisian cabaret? ''(B,D) (B)''\n\n[[Contiki Optional Excursions: Paris]]
*06:30pm Departing [[London Heathrow Airport]] Terminal 3 on flight SQ319 to [[Singapore International Airport]] Terminal 2\n*Flight time is 12 hours and 45 minutes\n*Flying with [[Brynn]]\n*Accommodation N/A\n| [img[images/maps/singapore-london.jpg]] |
*[[Paris]] to [[Bordeaux]]\n*Staying in [[Bordeaux]]\n\n''[[Contiki]]''\nWe stop at the magnificent [[Château Chambord]] in the fabled [[Loire Valley]], home to over 3000 lavish châteaux. We drive past vineyards which are used to produce many of the finest wines of [[France]] before our arrival in [[Bordeaux]]. ''(B,D)''\n\n| [img[images/maps/paris-bordeaux.jpg]] |
*02:15pm Arrive [[Singapore International Airport]] on flight SQ319 from [[London Heathrow Airport]]\n*Flight time is 12 hours and 45 minutes\n*Flying with [[Brynn]]\n*Staying in [[Singapore]]\n*''Accommodation has not been decided''\n| [img[images/maps/singapore-london.jpg]] |
*[[Bordeaux]] to [[Pamplona]]\n*Staying in [[Pamplona]]\n\n''[[Contiki]]''\nOur first stop this morning is in nearby [[Biarritz]]. Time for a swim or some shopping before crossing into the [[Spanish Basque]] country and to [[Pamplona]], renowned for the running of the bulls at the [[San Fermin Festival]]. An orientation tour of the main sights awaits. ''(B,D)''\n\n| [img[images/maps/bordeaux-pamplona.jpg]] |
*Staying in [[Singapore]]\n*''Accommodation has not been decided''
*[[Pamplona]] to [[Barcelona]]\n*Staying in [[Barcelona]]\n\n''[[Contiki]]''\nWe travel across the north of [[Spain]] today, past [[Zaragoza]] and on to the vibrant city of [[Barcelona]]. ''(B,D)''\n\n[[Contiki Optional Excursions: Barcelona]]\n\n| [img[images/maps/pamplona-barcelona.jpg]] |
*Staying in [[Singapore]]\n*''Accommodation has not been decided''
*Staying in [[Barcelona]]\n''[[Contiki]]''\nOur included sightseeing tour is a great introduction to this celebrated city. See [[Gaudi's Sagrada Familia Cathedral]], the 1992 Olympic Complex and the Gothic district. A chance to experience [[Barcelona's|Barcelona]] famed shopping street [[La Rambla]] and discover some of [[Spain's|Spain]] specialties. Tonight why not experience the passion of Flamenco dancing? ''(B)''\n\n*[[Flamenco Evening]] (Euro 30.00)\n**The Spanish are world-famous for their love of dancing. Feast your eyes on the passion and spirit of Flamenco dancing while enjoying a glass of the local specialty - Sangria! Carry on afterwards at one of Barcelona's lively areas where you'll find an exciting array of restaurants and night clubs. Ole!!
*09:10pm Departing [[Singapore International Airport]] Terminal 2 on flight SQ235 to [[Brisbane International Airport]]\n*Flight time is 7 hours and 30 minutes\n*Flying with [[Brynn]]\n*Accommodation N/A\n| [img[images/maps/brisbane-singapore.jpg]] |
*[[Barcelona]] to [[French Riviera]]\n*Staying in [[French Riviera]]\n\n''[[Contiki]]''\nWe return to [[France]] today and travel through the beautiful Provence region to [[Arles]]. Wander through the streets as the Romans once did in this historic town, before continuing to the glamorous [[French Riviera]]. ''(B,D)''\n\n| [img[images/maps/barcelona-arles.jpg]] |
*06:40am Arrive [[Brisbane International Airport]] on flight SQ235 from [[Singapore International Airport]]\n*Flight time is 7 hours and 30 minutes\n*Flying with [[Brynn]]\n*Staying in [[Brisbane]]\n| [img[images/maps/brisbane-singapore.jpg]] |\n\n| [img[images/maps/home-airport.jpg]] |
*Staying in [[French Riviera]]\n\n''[[Contiki]]''\nToday we visit a [[French]] perfumery before heading to [[Nice]]. Stroll down the fashionable [[Promenade des Anglais]] for a spot of shopping or simply relax on the beach. Tonight we visit [[Monaco]]! View the Royal Palace and take the opportunity to try your luck at the casinos of [[Monte Carlo]]. ''(B,D)''\n\n| [img[images/maps/arles-nice.jpg]] |
*[[Italy]] to [[Venice]]\n*Staying in [[Venice]]\n\n''[[Contiki]]''\nOur spectacular morning arrival into the [[Port of Venice|Venice]] is one of [[Europe's|Europe]] most impressive sights. After docking, we make our way to [[Verona]], home of Romeo and Juliet. A warm welcome awaits us tonight at [[Contiki's Venice Village]]. ''(B,D)''\n\n[[Contiki Optional Excursions: Venice]]\n\n| [img[images/maps/corfu-venice.jpg]] |\n\n| [img[images/maps/venice-verona.jpg]] |
*[[G-Man]] catches train from [[London]] to [[Harrogate]] either 10:00am or 12:00pm from [[Kings Cross Station]] \n*Train travel time is 2 hours and 50 minutes \n*[[G-Man]] staying in [[Harrogate]]\n| [img[images/maps/london-harrogate.jpg]] |
*Staying in [[Florence]]\n''[[Contiki]]''\nYour day includes a walking tour seeing the [[Piazza della Signoria]], the [[Duomo]] and [[Santa Croce]], and a chance to shop for leather, gold and silver. In your free time maybe visit one of the city's many museums and this evening enjoy the colourful Florentine nightlife. ''(B)''\n\n[[Contiki Optional Excursions: Florence]]
*[[French Riviera]] to [[Florence]]\n*Staying in [[Florence]]\n\n''[[Contiki]]''\nToday we leave [[France]] and enter [[Italy]]! We drive past the seaside city of [[Genoa]] en-route to [[Pisa]] to see the famous [[Leaning Tower]]. From here we weave through the [[Tuscan]] countryside heading to the birthplace of the [[Renaissance]], [[Florence]]. ''(B,D)''\n\n[[Contiki Optional Excursions: Florence]]\n\n| [img[images/maps/nice-genova-pisa-florence.jpg]] |
*[[Florence]] to [[Rome]]\n*Staying in [[Rome]]\n\n''[[Contiki]]''\nAll roads lead to [[Rome]] where our included sightseeing tour is the perfect introduction to the Eternal City. Do as the Romans do and stroll past the [[Trevi Fountain]], the amazing [[Pantheon]], and [[Piazza Navona]]. ''(B)''\n\n[[Contiki Optional Excursions: Rome]]\n\n| [img[images/maps/florence-rome.jpg]] |
*Staying in [[Rome]]\n''[[Contiki]]''\nTwo full days to discover this amazing city. Time to visit the [[Vatican City|Vatican]] and the [[Sistine Chapel]], enjoy lunch in the piazzas, or maybe shop along the [[Via del Corso]]. Sample some gelato and pizza and relax! Why not join us for a tour of [[Imperial Rome]] and the [[Colosseum]]? ''(B,D) (B,D)''
*Staying in [[Rome]]\n''[[Contiki]]''\nTwo full days to discover this amazing city. Time to visit the [[Vatican City|Vatican]] and the [[Sistine Chapel]], enjoy lunch in the piazzas, or maybe shop along the [[Via del Corso]]. Sample some gelato and pizza and relax! Why not join us for a tour of [[Imperial Rome]] and the [[Colosseum]]? ''(B,D) (B,D)''
*[[Rome]] to [[Sorrento]]\n*Staying in [[Sorrento]]\n\n''[[Contiki]]''\nAfter leaving [[Rome]] we head south to [[Naples]] to board our complimentary motor boat to the island of [[Capri]]. After exploring the island we rejoin our boat and set sail to [[Sorrento]], situated on [[Italy's|Italy]] stunning [[Amalfi coast|Amalfi]]. ''(B)''\n\n| [img[images/maps/rome-naples.jpg]] |\n\n| [img[images/maps/naples-sorrento.jpg]] |
*[[Sorrento]] to [[Corfu]]\n*Staying in [[Corfu]]\n\n''[[Contiki]]''\nToday is your chance to explore the ancient ruins of [[Pompeii]] with a local guide. Later we take in the beautiful scenery of southern [[Italy]] as we travel east to board our overnight ferry to [[Greece]]. ''(B)''\n\n[[Contiki Optional Excursions: Pompeii]]\n\n| [img[images/maps/sorrento-bari.jpg]] |\n\n| [img[images/maps/bari-corfu.jpg]] |
*Staying in [[Corfu]]\n''[[Contiki]]''\nFour sun-filled days on the beautiful [[Greek]] island of [[Corfu]]. Windsurf, waterski, parasail, swim or just soak up the sun. Get off the beaten track in an open-top 4-wheel drive jeep or cruise along the coast. At night, enjoy the local cuisine and try your hand (or feet) at [[Greek]] dancing. ''(B,D) (B,D) (B,D) (B)''\n\n[[Contiki Optional Excursions: Corfu]]
*Staying in [[Corfu]]\n''[[Contiki]]''\nFour sun-filled days on the beautiful [[Greek]] island of [[Corfu]]. Windsurf, waterski, parasail, swim or just soak up the sun. Get off the beaten track in an open-top 4-wheel drive jeep or cruise along the coast. At night, enjoy the local cuisine and try your hand (or feet) at [[Greek]] dancing. ''(B,D) (B,D) (B,D) (B)''\n\n[[Contiki Optional Excursions: Corfu]]
[[Contiki]]\nAmsterdam, (or the ‘Dammage as many [[Contiki]] veterans like to call it) is the capital and largest city in the [[Netherlands]]. Surrounded by rings of man made canals, bridges and beautiful buildings it is a city abounding with almost surreal fantasy-like beauty. The liberal, laid back culture of the Dutch also adds a great deal to the appeal and vibe of this fun, friendly European capital.\n\nThings to do in Amsterdam\n*[[Heineken Brewery]]\n*[[Anne Frank's House]]\n*[[Van Gogh Museum]]\n*[[Red Light District]]\n*[[Coffee Shops]]
*Staying in [[Corfu]]\n''[[Contiki]]''\nFour sun-filled days on the beautiful [[Greek]] island of [[Corfu]]. Windsurf, waterski, parasail, swim or just soak up the sun. Get off the beaten track in an open-top 4-wheel drive jeep or cruise along the coast. At night, enjoy the local cuisine and try your hand (or feet) at [[Greek]] dancing. ''(B,D) (B,D) (B,D) (B)''\n\n[[Contiki Optional Excursions: Corfu]]
*Staying in [[Corfu]]\n''[[Contiki]]''\nFour sun-filled days on the beautiful [[Greek]] island of [[Corfu]]. Windsurf, waterski, parasail, swim or just soak up the sun. Get off the beaten track in an open-top 4-wheel drive jeep or cruise along the coast. At night, enjoy the local cuisine and try your hand (or feet) at [[Greek]] dancing. ''(B,D) (B,D) (B,D) (B)''\n\n[[Contiki Optional Excursions: Corfu]]
*Staying in [[Venice]]\n''[[Contiki]]''\nA short boat ride takes us into the historical centre of [[Venice]] to see [[St. Mark's Square]], the [[Doges' Palace]], and the [[Bridge of Sighs]]. See glass and lace making demonstrations and why not treat yourself to a gondola ride? ''(B,D)''\n\n[[Contiki Optional Excursions: Venice]]
*[[G-Man]] staying in [[Harrogate]]
*[[Corfu]] to [[Italy]]\n*Staying in [[Italy]]\n\n''[[Contiki]]''\nA full day and night cruise across the [[Adriatic|Adriatic Sea]] back to [[Italy]]. Relax and enjoy the boat's facilities. ''(B)''\n\n| [img[images/maps/corfu-venice.jpg]] |
*11:45pm [[G-Man]] departs [[Brisbane International Airport]] on flight SQ246 to [[Singapore International Airport]]\n*Flight time is 8 hours\n*Accommodation N/A\n| [img[images/maps/home-airport.jpg]] |\n\n| [img[images/maps/brisbane-singapore.jpg]] |
*05:45am [[G-Man]] arrives at [[Singapore International Airport]] on flight SQ246 from [[Brisbane International Airport]]\n*Flight time was 8 hours\n*Stop over time is 3 hours and 15 minutes\n*09:00am [[G-Man]] departs [[Singapore International Airport]] Terminal 2 on flight SQ308 to [[London Heathrow Airport]] Terminal 3\n*Flight time is 13 hours and 30 minutes\n*03:45pm [[G-Man]] arrives at [[London Heathrow Airport]] Terminal 3 on flight SQ308 from [[Singapore International Airport]] Terminal 2\n*Staying in [[London]]\n*''Accommodation has not been decided''\n| [img[images/maps/singapore-london.jpg]] |
*[[Venice]] to [[Vienna]]\n*Staying in [[Vienna]]\n\n''[[Contiki]]''\nAn enchanting drive as we waltz into the home of Mozart and Strauss to see the capital of the once mighty [[Austrian Empire|Austria]], [[Vienna]]. ''(B)''\n\n[[Contiki Optional Excursions: Vienna]]\n\n| [img[images/maps/verona-vienna.jpg]] |
[[Contiki]]\nThe part of the Anne Frank House is the building in which Anne and her family were hiding and it has been preserved in very much the same way as it was during their ordeal. The museum contains parts of Anne’s original diary and, as much as it is a museum to Anne herself, it is also testament to the persecution of the Jewish population of the Netherlands by the Nazis.\n\nMuseum is open 9AM to 9PM and entry fee is 7.50 Euro. Museum is located at Prinsengracht 267.
*09:05am [[G-Man]] catches train from [[Harrogate]] to [[Edinburgh]] (trains every hour)\n*Train travel time around 3 hours and 45 minutes\n*[[G-Man]] staying in [[Edinburgh]] at [[smartcityhostels]]\n| [img[images/maps/harrogate-edinburgh.jpg]] |
*Staying in [[Vienna]]\n''[[Contiki]]''\nOn our sightseeing tour see the Palace of the [[Hapsburgs]], [[State Opera House]] and fashionable [[Kärntnerstrasse]]. In your free time try authentic apple strudel, Viennese coffee and perhaps sample some local Schnaps. This evening why not join us for a concert to experience the timeless music of Mozart and Strauss? ''(B,D)''\n\n[[Contiki Optional Excursions: Vienna]]
*[[G-Man]] staying in [[Edinburgh]] at [[smartcityhostels]]
*[[Vienna]] to [[Munich]]\n*Staying in [[Munich]]\n\n''[[Contiki]]''\nOn to [[Bavaria's|Bavaria]] lively capital [[Munich]], home to the [[Oktoberfest]]. Maybe join us this evening at one of the city's traditional Beer Halls. ''(B)''\nhttp://www.thecrawl.de/\n\n[[Contiki Optional Excursions: Munich]]\n\n| [img[images/maps/vienna-munich.jpg]] |
*03:15pm [[G-Man]] departs [[Edinburgh]] on flight [[EI255]] to [[Dublin]] via [[Aer Lingus]] airlines\n*04:14pm [[G-Man]] arrives at [[Dublin]] on flight [[EI255]] from [[Edinburgh]] via [[Aer Lingus]] airlines\n*Flight time is 1 hour\n*Staying in [[Dublin]] at [[Jacobs Inn]]\n| [img[images/maps/edinburgh-dublin.jpg]] |
*[[Munich]] to [[Swiss Alps]]\n*Staying in [[Swiss Alps]]\n\n''[[Contiki]]''\nWe stop for lunch in [[Vaduz]], the capital of [[Liechtenstein]]. Enjoy time to shop and sightsee in [[Lucerne]] before reaching our idyllic stop in the [[Swiss Alps]]. ''(B,D)''\n\n[[Contiki Optional Excursions: Swiss Alps]]\n\n| [img[images/maps/munich-swissalps.jpg]] |
*11:45pm [[Brynn]] departs [[Brisbane International Airport]] on flight SQ246 to [[Singapore International Airport]]\n*[[G-Man]] staying in [[Dublin]] at [[Jacobs Inn]]
*Staying in [[Swiss Alps]]\n''[[Contiki]]''\nA spectacular day where you can choose to hike the many trails or maybe enjoy a trip up the snow-covered [[Jungfrau]] mountain on a cog railway that passes through the [[Eiger]] mountain! ''(B,D)''\n\n[[Contiki Optional Excursions: Swiss Alps]]
*05:45am [[Brynn]] arrives [[Singapore International Airport]] on flight SQ246 from [[Brisbane International Airport]]\n*08:45am [[G-Man]] catches ferry from [[Dublin]] to [[Holyhead]]\n*09:00am [[Brynn]] departs [[Singapore International Airport]] on flight SQ308 to [[London Heathrow Airport]]\n*10:45am [[G-Man]] arrives via ferry at [[Holyhead]] from [[Dublin]] \n*11:40am [[G-Man]] catches train from [[Holyhead]] to [[Crewe]]\n*02:00pm [[G-Man]] arrives via train at [[Crewe]] from [[Holyhead]]\n*02:15pm [[G-Man]] catches train from [[Crewe]] to [[Birmingham New Street]]\n*03:11pm [[G-Man]] arrives via train at [[Birmingham New Street]] from [[Crewe]]\n*03:24pm [[G-Man]] catches train from [[Birmingham New Street]] to [[Leicester]]\n*03:30pm [[Brynn]] arrives [[London Heathrow Airport]] on flight SQ308 from [[Singapore International Airport]]\n*04:13pm [[G-Man]] arrives via train at [[Leicester]] from [[Birmingham New Street]]\n*04:30pm [[G-Man]] catches train from [[Leicester]] to [[London St Pancras]]\n*05:51pm [[G-Man]] arrvies via train at [[London St Pancras]] from [[Leicester]]\n*Staying in [[London]] at [[Astor Museum Inn]]\n| [img[images/maps/dublin-london.jpg]] |
*[[Swiss Alps]] to [[Heidelberg]]\n*Staying in [[Heidelberg]]\n\n''[[Contiki]]''\nHeading north we re-enter [[Germany]] and visit the university town of [[Heidelberg]] on the banks of the [[Neckar River]]. [[Heidelberg's|Heidelberg]] captivating old town and picturesque river are best viewed from its imposing castle. ''(B)''\n\n| [img[images/maps/swissalps-heidelberg.jpg]] |
*Staying in [[London]] at [[Astor Museum Inn]]
*[[Heidelberg]] to [[Amsterdam]]\n*Staying in [[Amsterdam]]\n\n''[[Contiki]]''\nWe pass the legendary [[Lorelei]] before a short pause in [[St. Goar]] in the [[Rhine Valley]] famous for its storybook castles. Then we cross the [[Dutch]] border and on to [[Amsterdam]]. ''(B,D)''\n\n[[Contiki Optional Excursions: Amsterdam]]\n\n| [img[images/maps/heidelberg-amsterdam.jpg]] |
*07:00pm Pre-departure meeting at the [[Contiki Basement]] (which is under the [[Royal National Hotel]])\n*Staying in [[London]] at [[Astor Museum Inn]]
''[[Contiki]]''\nA famous name that lends itself to wines produced in this region, this is a town with a population of roughly 1 million inhabitants including suburban areas. It is also has one of [[Europe’s|Europe]] largest universities (University of [[Bordeaux]]) with more than 50,000 students; including other public and private colleges and universities, this is home to almost 100,000 students. If [[Bordeaux]] is part of your itinerary, make your way to the old classical part of town. The transition from modern present day buildings to 18th century architecture appears suddenly and you’ve entered another world. Old classical buildings sparsely dotted by restaurant terraces and cafes with many streets for pedestrian use only.\n\n[[Something Awful Tips|Something Awful]]\n"The first town to be liberated by the [[Americans|United States of America]] after D-Day, secluded with some really affordable hotels (I rented a two-room unit atop a cozy little restaurant overlooking the beach). Sleepy, somewhat secluded, and endlessly sunny. [[Bordeaux]] coincidentally has a cathedral also named [[Notre Dame]], which looks almost exactly like its [[Parisian]] counterpart, except that its belltowers are spires in contrast to [[Paris]]' box-like ones. Great food, and visiting the D-Day graveyards (which are for both allied and axis soldiers) is a truly humbling experience." -Mr. Sleep\n\n| [img[images/bordeaux.jpg]] |
*G-Man & [[Brynn's|Brynn]] home town, starting and ending point for trip
*Airport located in [[Brisbane]]
*Second coolest person on Earth
''Contiki Holidays 32 Day Camping Trip''\nhttp://contiki.com.au/tours/105-europe-camping-32-days\n*[[London]]\n*[[Paris]]\n*[[Bordeaux]]\n*[[Pamplona]]\n*[[Barcelona]]\n*[[French Riviera]]\n*[[Florence]]\n*[[Rome]]\n*[[Sorrento]]\n*[[Corfu]]\n*[[Italy]]\n*[[Venice]]\n*[[Vienna]]\n*[[Munich]]\n*[[Swiss Alps]]\n*[[Heidelberg]]\n*[[Amsterdam]]\n\n[[Contiki Optional Excursions]]
*Coolest person on earth
http://en.wikipedia.org/wiki/London\n\n[[London]] is the capital and largest urban area of [[England]] and the [[United Kingdom]]. At its core, the ancient City of [[London]], to which the name historically belongs, still retains its limited mediaeval boundaries; but since at least the 19th century the name "[[London]]" has also referred to the whole metropolis which has developed around it.\n\n''[[Contiki]]''\nLondon is one of the most happening, famous and cosmopolitan cities in the world.\n\n[[Buckingham Palace]], [[Trafalgar Square]], [[Piccadilly Circus]], the [[West End]], [[London Eye]], [[Oxford Street]], [[Harrods]], [[Kensington]], [[Hyde Park]], the [[Tower of London]] is just the surface of what London has to offer while all the pubs, clubs and bars add to the vibe of one of Europe’s most buzzing capital cities.\n\nThe city is [[Contiki’s|Contiki]] [[European|Europe]] base with many of our tours starting and finishing at the [[Royal National Hotel]]\n\n[[Lonely Planet Tips|Lonely Planet]]\n''[[London]] in two days''\nStroll around the sights of [[Westminster]] before enjoying the artworks of the [[National Gallery]]. Walk across to [[Convent Garden]] for some shopping in [[Neal's Yard]], before taking the tube to [[Blackfriars]]. Duck into [[Dr Johnson's House]] off [[Fleet Street]], grab a beer at the nearby [[Ye Olde Cheshire Cheese]], then stroll up to [[St Paul's Cathedral]]. Walk the [[Millennium Bridge]] to the [[Tate Modern]].\n\n[[Something Awful Tips: London]]\n[[Something Awful Tips: London Restaurants]]\n\n| [img[images/london.gif]] |
\n[[Something Awful Tips: London Restaurants]]\n\n*''Information''\n**~TfL Journey Planner - Tell it where you're coming from and where you're going to, and it will spit back all the different ways to get between the two, how long it will take, and how much it will cost you. Absolutely fucking essential for those "How the hell do I get home from Club X at 4am?" questions. Also great if you're arriving from another country and want to know the best route to your hotel! (squirrellypoo)\n**If you're staying a bit longer in [[London]], say a few months, definitely get an Oyster card. (See www.tfl.gov.uk for more details.) No more faffing with cardboard travelcards that fuck up and don't swipe! (~EvilMojoJoJo)\n**www.londontown.com - It has all kinds of useful shit on it like street maps to various locations, hotel guides, event listings, restaurant guides, and a bunch of other stuff. I'm an American living in [[London]] and this site has made it much easier for me to find things in this town. I'm sure others could find it useful too. (Risket)\n*''Tourist Spots''\n**Landmarks - [[Parliament]], [[Buckingham Palace]], the [[Tower of London]], [[Admiralty Arch]], [[Trafalgar Square]], [[Leicester Square]] are the ones I'd recommend. They're all pretty close together so my advice is get a travelcard (which lets you use all of [[London's|London]] Public transport all day for a flat fee) and get your friend to give you the tour in one day. (Jamesface)\n**Museums - Definitely do the [[Tate Modern]]. [[Tate Britain]] is good too, as is the [[British Museum]]. The [[Natural History Museum]], [[The Victoria & Albert Museum]] and the [[Science Museum]] are all next to each other, and all worth visiting. All of these museums are now free to enter, luckily. (Jamesface)\n**[[London]] also has the [[Imperial War Museum]], one of the larger museums dedicated to the first world war. They have F.M. Montgomery's command car from North Africa and tons upon tons of artifacts from all sides involved in the war, though their bookship is somewhat (~RandolH)\n**Absolute must-see is a little tiny museum near Holborn tube, [[Sir John Soane's house]], on Lincoln's Inn Fields. TRUST ME ON THIS. I've sent so many friends down there, and everyone's loved it. And you've got nothing to lose as it's free (and there's a fantastic pub from the 1400s right nearby, [[The Cittie Of Yorke]], that serves real ale and cheap food). (squirrellypoo)\n**Skip [[London Dungeon]] and the [[Tower of London]]. They're crowded, horrible, and unbelievable overpriced. For history, take a couple hours in the [[British Museum]] or the [[Museum of London]]. free free free weeeeeee! (squirrellypoo)\n**[[Science Museum]] - huge place, lots of really cool and interesting stuff. It may be worth checking their website for more information, they sometimes have things set up for a few weeks. Also very cheap (free I think actually) to get in. One of my favourite places in [[London]] really. (~FractionMan)\n**The "[[Original Bus Tour]]" is well worth the £15. They have a fleet of open-air double decker buses that travel all around [[London]], so each stop has a bus coming every 10 minutes. You can get off on any stop, take as much time as you like, and then get back on later. It comes with a free hour long boat ride on the [[Thames]] (if you go both ways) which is excellent, and the buses run well into the evening. This is a great way to be introduced to [[London]], get an idea of where everything is, and see some of the sights in a days time. Then you can come back on a later day to the things you enjoyed and be more familiar with them. (~ArchivalQuality)\n**[[Greenwich]] is a fun place to visit if you happen to be in [[London]]. There's the [[Royal Observatory]] at the top of the hill in [[Greenwich park]], where you can take a photo of yourself jumping over the [[International Date Line]]. There are also many cool shops, a market (might be weekends only?) selling arty farty bits and bobs, a really fucking rough [[Wetherspoons]] pub (cheap beer, woo), the [[National Maritime Museum]] thingy, the [[Cutty Sark]] (really fucking cool tea clipper), more stunning architecture than you can shake a big stick at, and the amazing pie shop. Also, [[Greenwich]] is easily small enough to wander round on foot, and accessible by DLR (Stop: [[Cutty Sark]]). Oh yes, and [[Maritime Greenwich]] is a World Heritage Site. If you go, give me a shout (IM info in profile) as I live within walking distance of the place (via the [[Rape Tunnel]]) (~EvilMojoJoJo)\n**Go to the [[Hard Rock Cafe]] shop (across from the actual [[Hard Rock Cafe]]), and take the short tour into the basement. Down there in the vault, they let you actually hold Jimi Hendrix's guitar, B.B. King's "Lucille," and various other famous instruments. It's actually pretty cool. (~JimTheSarcastic)\n**I don't care how much of a manly man you are, or how gay you think it makes you, go see a fucking play or a musical while in [[London]]. I saw [[Les Miserables]] last summer and [[The Phantom of the Opera]] earlier this summer. Both were fucking amazing. Before seeing [[Les Mis|Les Miserables]], I thought it'd be gay as fuck, but after a few minutes of it, I realized it was fucking amazing. Plus, we had seats in about the on the floor 6 rows from the stage, dead center. We could see into the orchestra pit. The tickets, I think, cost us 30 pounds each, booked in advance. That's another thing, if you know when you'll be in [[London]], book your tickets ahead of time. Also, you don't really have to dress up at all for the theatre. (~JimTheSarcastic)\n**Activities - The [[London Eye]] will show you the whole city. You can also get waterbuses down the [[Thames]] which I recommend. (Jamesface) The [[London Eye]] is a total swiz; it's very expensive, the queues around then will be insane and frankly it's not that great. do a [[Thames]] boat tour or get up a tall building instead, seriously. (marwood)\n**Races - go to the [[Walthamstow]] dog track on a saturday night. quality entertainment at a great price. (aversion)\n**the [[Prince Charles cinema]] off [[Leicester Square]] is less then half the price of most [[London]] cinemas, it shows rad movies like bundy that aren't on anywhere else and it's always full of interesting drunks, drug addicts and good looking film fans like myself. (aversion)\n**[[London Underground]]: Ever seen American Werewolf in [[London]]? Well, the tube STILL looks like that (Minus the Jubilee and parts opf the District and Circle lines). Its great fun when quiet (Usually around 3-4PM ) and the best way to get about IMO. It's seperated into zones, which is how payment is calculated - just get an allday travelcard for zones 1-3 and that should do for all your travel needs! (~LordEvilElmo)\n**[[London]] Walks: Easy ones to do are around [[Westminster]] and [[St James' Park]], [[South Bank]] to [[Bankside]] to [[Tower Bridge]], [[Baker Street]] through to [[Camden]]. All are easy enough and if you ask for brief directions people will help out. I can provide you with a couple of maps if you would like, with some notes on history etc. (~LordEvilElmo)\n*''Shopping''\n**Shops - [[Oxford Street]], [[Regent Street]], [[Carnaby Street]] and [[Tottenham Court Road]] are all close together. If you can do [[Camden Market]] at the weekend definitely do. [[Harrods]] is out of the way in [[Knightsbridge]] and not as special as it used to be, I wouldn't count it as a target any more. (Jamesface) For up&coming cheap fashion, definitely go to [[Spitalfields Market]] (near [[Liverpoool Street]]) on Sundays for moshpit crowds and very quirky designer fashion for extremely cheap. (squirrellypoo)\n*''Eating''\n**Food - Soho is a good idea. Also try [[Borough Market]] and the [[West End]] as a whole. (Jamesface) [[Brewer Street]] in london has some great japanese restaurants. (jonnii) Pub sunday lunch cannot be beaten, or pub lunch on anyday (roast beef and yorkshire pudding) Spitfire rocks. (phikl)\n**Buy a bottle of water and fill it throughout the day. Also, if where you're staying has a free breakfast or a flat rate for a buffet, take advantage of it. Make a couple sandwiches to take with you for the rest of the day, because food and water is expensive as fuck in the touristy parts of [[London]]. This advice goes really for pretty much anywhere in [[Europe]]. (~JimTheSarcastic)\n*''Pubs''\n**Ale - As far as beers are concerned, you need to get some real ale inside you. [[Spitfire]], [[Abbot|Abbot Ale]] or [[Newcastle Brown]] come highly recommended...but head into any inner-city [[Wetherspoons]] (a chain of pubs) and they'll do one or two weird-ass obscure ales. The idea being to taste as many as humanly possible (gucci_piggy)\n**Pubs - If you want the real English Pub experience, I'd steer clear of [[Wetherspoons]]. They're dead cheap, but there's no music, they're always packed with the pre-club crowd and the beer is usually bloody awful. Anyone who thinks that [[Spitfire]] is a real ale hasn't tried the genuine article. Try [[Theakstones]], [[Eldridge Popes]], [[Old Speckled Hen]] or [[London Pride]], all good quality falling-over juice.\n**A lot of British pubs are owned by big brewery companies, and tend to serve the same range of Australian lagers, cheap bitters and overpriced bottled crap like Bacardi Breezer, or "bitch piss" as it's affectionately known. They're OK if all you want is to get leathered, but you'll be missing out on a the real heritage stuff.\n**Look for a sign saying "[[Free House]]", which usually means the pub is independently owned and the landlord is free to stock whatever beers he wants. Either that, or stick to pubs owned by small breweries. If you can find one that has a good range of real ales and know how to keep them properly, then you've struck gold.\n**If you're going to be in [[London]], I'd recommend [[The George]], in [[George Inn Yard]], ~SE1. The place was built in the 1500's; Shakespeare and Dickens were both regulars. Also good is [[Ye Olde Cheshire Cheese]] in [[Fleet Street]], and the [[Prospect Of Whitby]], [[Wapping Wall]] E1 (a brewery pub, but one of [[London's|London]] oldest). (chromis)\n**If your looking for a cheap pub [[The Goose]] a block from the russel square tube station is good, £3.95 for a burger(beef or chicken) and a pint, £2 double drinks + mixer. (~BigRedCat)
Airport located in [[London]]
''[[Contiki]]''\nThe [[London Underground]] (known to the locals as the ‘tube’) is the most famous and most used part of [[London]]’s public transport system.\n\nThe tube is one of the best ways to get from [[London]] Heathrow Airport to central [[London]] and also a great way to get around they city.\n\nTickets are available at vending machines or ticket booths inside tube stations and all day tube passes are known as ‘Travel Cards’ and are cheaper if you buy them off peak (after 9:30am)\n\nIf you’re staying in [[London]] for a even a wek it may be worth looking into an ‘oyster’ card to save you money on your tube travel.\n\nCentral [[London]] isn’t huge however and walking is one of the best ways to get around and see the city. Walking from one place to another can sometimes be faster than taking the tube.
http://en.wikipedia.org/wiki/Paris\n\n[[Paris]] is the capital city of [[France]]. It is situated on the [[River Seine]], in northern [[France]], at the heart of the Île-de-France region. [[Paris]] has an estimated population of 2,153,600 within its administrative limits.\n\n''[[Contiki]]''\nSimply the mention of ‘[[Paris]]’ creates heady images of style, culture, food, fashion, glitz, beauty, grandeur, and pomp and the [[Eiffel Tower]]. The Capital of [[France]] and one of the most vibrant, cosmopolitan and iconic cities in the world is a bustling city whose metropolitan area is home to over 11 million [[Parisians]]. All this together with the buildings, monuments, museums, people, cityscapes, attitude, creates a magical feel to the city that leaves a lasting impression on first time visitors.\n\n[[Evening Tour of Illuminations]]; See the [[Eiffel Tower]], [[Arc de Triomphe]], the [[Louvre]], the [[Champs-Élysées]], and [[Notre Dame Cathedral]]; See [[Château Versailles]] (entrance not included)\n\n''[[Something Awful Tips: Paris]]''\n\n| [img[images/paris.jpg]] |
Royal National Hotel\nBedford Way\nLondon ~WC1H ODG\nT: 020 7637 0802\nF: 020 7637 2121\nW: www.imperialhotels.co.uk\n\n| [img[images/maps/royalnationalhotel.jpg]] |\n\nThe best way to get to the Royal National from London Heathrow Airport is to take the London Underground. From the airport you will need to catch the Piccadilly Line which will take you to Russell Square, the Royal National is only a few minutes walk from the station. The approximate cost of the trip is £3.80.
*Flight number for flight between [[Singapore]] and [[Brisbane]] on [[17th July 2008]]\n*Depart at 9:10pm\n*Flight time is 7 hours and 30 minutes\n*Arrive at 06:40am\n*Flying with [[Brynn]]
*Flight number for trip between [[Brisbane]] and [[Singapore]]\n*Depart at 11:45pm\n*Flight time is 8 hours\n*Arrive at 05:45am
*Flight number for trip between [[Singapore]] and [[London]]\n*Depart at 09:00am\n*Flight time is 13 hours and 30 minutes\n*Arrive at 03:30pm
*Flight number for trip between [[London]] and [[Singapore]] on [[13th July 2008]]\n*Depart at 06:30pm\n*Flight time is 12 hours and 45 minutes\n*Arrive at 02:15pm\n*Flying with [[Brynn]]
Airport located in [[Singapore]]
Website forum with lots of useful info regarding [[Europe]]\nhttp://forums.somethingawful.com/showthread.php?threadid=1021275
[[Contiki]]\nThe [[Louvre]] in is arguably the most famous museum in the world, it is also home to perhaps the most famous painting in the world – [[Leonardo Da Vinci’s]] [[Mona Lisa]]. Located on the banks of the [[Seine River]] in [[Paris]], it is also the second largest museum in the world and also houses the [[Winged Victory]], the [[Venus De Milo]], and the [[Madonna of the Rocks]]. You could spend literally weeks, if not months checking out everything the [[Louvre]] has to offer. Some people whiz through just checking out [[Mona Lisa]] and a few of the other super-famous sights along the way while others spend half a day or more taking in this most famous of [[Paris]]’ museums.\n\nhttp://en.wikipedia.org/wiki/Louvre\n\nThe [[Louvre]] in [[Paris]], [[France]], is one of the most visited and famous museums in the world. The structure is located on the [[Right Bank]] in the 1^^er^^ arrondissement between the [[Seine River]] and the [[Rue de Rivoli]].\n\n| [img[images/louvre.jpg]] |
http://www.abbotale.co.uk/\n\n| [img[images/abbotale.jpg]] |\n\n[[Abbot Ale]] is one of the truly great cask ales in the [[UK|United Kingdom]] today - strong, robust and full of flavour. Brewed in the Suffolk town of Bury St Edmunds, [[Abbot Ale]] is [[Greene King's|Greene King]] flagship brand.\n\n[[Greene King's|Greene King]] flagship brand [[Abbot Ale]] is a favourite with the nation's discerning beer drinker. An iconic beer, [[Abbot|Abbot Ale]] is brewed for longer in a traditional way in order to achieve its world famous distinctive taste.\n\nThe secret of [[Abbot Ale]] lies not only in its ingredients but the way it is treated along every step of its production, from the arrival of the raw ingredients at the brewery to the cask and beyond.\n\nThe result (a pint of perfect beer) is due to the care, dedication and craftsmanship of everyone who works on [[Abbot Ale]]. Quality is the benchmark.\n\n[[Abbot Ale]] is brewed with pale crystal and amber malts to give an attractive colour and rich malty taste. Challenger hops give it bitterness with a spicy overtone and to really boost the taste and aroma to the maximum it is late-hopped with Fuggles to provide the floral tones and fruity esters.\n\nFull flavoured, smooth and mature, [[Abbot Ale]] is an exceptional, quality drink. No wonder this beer is the first choice for so many discerning real ale lovers.
http://en.wikipedia.org/wiki/Admiralty_Arch\n\n[[Admiralty Arch]] is a large office building in [[London]] which incorporates an archway providing road and pedestrian access between [[The Mall]], which extends to the southwest, and [[Trafalgar Square]] to the northeast.\n\n| [img[images/admiralty-arch.jpg]] |
http://en.wikipedia.org/wiki/Adriatic_Sea\n\nThe [[Adriatic Sea]] is a body of water separating the [[Italian Peninsula]] from the [[Balkan Peninsula]], and the system of the [[Apennine Mountains]] from that of the [[Dinaric Alps]] and adjacent ranges. The [[Adriatic Sea]] is a part of the [[Mediterranean Sea]].\n\n| [img[images/adriatic-sea.jpg]] |
http://en.wikipedia.org/wiki/Amalfi\n\n[[Amalfi]] is a town and commune in the province of [[Salerno]], in the region of [[Campania]], [[Italy]], on the [[Gulf of Salerno]], 24 miles southeast of [[Naples]]. It lies at the mouth of a deep ravine, at the foot of Monte Cerreto (1,315 meters, 4,314 feet), surrounded by dramatic cliffs and coastal scenery. The town of [[Amalfi]] was the capital of The Maritime Republic of Amalfi, an important trading power in the [[Mediterranean]] between 839 and around 1200.\n\n| [img[images/amalfi-coast.jpg]] |
The [[Apennine Mountains]] is a mountain range stretching 1000 km from the north to the south of [[Italy]] along its east coast, traversing the entire peninsula, and forming the backbone of the country.\n\n| [img[images/apennine-mountains.jpg]] |
http://en.wikipedia.org/wiki/Arc_de_Triomphe\n\nThe [[Arc de Triomphe]] is a monument in [[Paris]] that stands in the centre of the [[Place Charles de Gaulle]], also known as the [[Place de l'Étoile |Place Charles de Gaulle]](Star Square). It is at the western end of the [[Champs-Élysées]]. The arch honours those who fought for [[France]], particularly during the [[Napoleonic Wars]], and today also includes the tomb of the unknown soldier.\n\n[[Contiki]]\nCommissioned by [[Napoleon]] almost 200 years ago as a tribute to his soldiers, the [[Arc de Triomphe]], in the heart of [[Paris]], [[France]], is still today the most important war memorial to the [[French]]. The Arc resides in the middle of one of the biggest round-a-bout roads in the world with 12 of [[Paris]]’ major streets, including the [[Champs-Élysées]], leading into the [[Place Charles de Gaulle]] and the Arc. In a city filled with amazing sights, monuments and structures, the Arc still stands out as one of the icons of not only the city, but the country of [[France]].\n\nClimb the stairs to the top of the Arc for amazing views over the city.\n\n| [img[images/arc-triomphe.jpg]] |
*''Tourist Spots''\n**"[[Paris]] is an awesome city, but watch your ass, especially in big, trashy Métro stations like [[Barbès]]. I would recommend visiting Jim Morrison's grave, walking up and down the [[Champs-Élysées]] and seeing the [[Rodin museum]], but that's just me. DEFINITELY go see Sacre-Coeur -- you can see all of [[Paris]] from the hilltop, and getting there involves walking through [[Montmartre]], which is one of the coolest parts of town." -Crimsonfunk\n**"[[Tour the Catacombs]] (near Denfert-Rochereau metro), and if you're going to do the [[Louvre]], go very very early in the morning, and go via the underground mall-ish entrance rather than the crowded pyramid one. rush straight to the [[Mona Lisa]] & [[Venus De Milo]], then stroll around the rest. And [[Musee D'Orsay]] is also exceptional if you enjoy impressionists and [[Art Nouveau]]. Oh, and if anyone's interested, my [[French]] housemate pointed me towards a tiny backstreet restaurant near the [[Bastille]] that I tried when I was in [[Paris]] a few weeks ago. cheap, and goooooorgeous food. I can dig out the address if need be." -squirrellypoo\n**"If you're headed out to [[Pere Lachaise]] cemetary to see Jim Morrison's grave you will be disappointed. The grave was recently redone into a conservative headstone, and now there is a fence around the grave along with a guard watching the grave. So there are no longer whiskey bottles and graffiti all over the grave. If you still go to the cemetary check out Oscar Wilde's grave. The custom is for girls to put on bright red lipstick and leave kiss marks on the grave, and every inch of the 10 foot square grave is covered.\n**Shell out the money to see a cabaret show. I chose the raunchier [[Crazy Horse]], but if you have morals choose the [[Moulin Rouge]] for a classier show. The [[Crazy Horse]] has student deals where you get to see the show from the bar (a good seat) and get two drinks for 29 euros. The show is unbelievable.\n**[[Rodin museum]] is a must.\n**[[Bastille District|Bastille]] is a great place for young kids to party.\n**In the large open area in front of [[Notre Dame]], there are girls going around holding postcards and asking people "do you speak English?", trying to get you to read it for them. DO NOT DO IT. When you go to read the card, a bunch of pickpockets will surround you and take everything you have. Heck, spend as little time as possible around [[Notre Dame]], which is very overrated.\n*''Pubs''\n**If you have some spare change go to the [[Buddha Bar]] off the [[Champs|Champs-Élysées]]. The scene is pretty weak but architectually, the greatest bar I have ever seen." -Logik\n*''Information''\n**"In [[Paris]], you don't need to buy metro tickets. I met some Quebecois there and we didn't buy one metro ticket between the four of us. The only place they check at seems to be the metro stop for the [[Eiffel Tower]]. Don't know about the RER stop.\n**Most of the museums are free if you are under 18. Since the people taking tickets are state employees, they don't really check for ID. If you look young at all, say I am seventeen (I said J'ai dix-sept ans.) and they will probably wave you through.\n**"[[Paris]] is goddamn expensive. There, it had to be said.\n**Frommer's said people in [[Paris]] dressed nice, so tourists should wear something nice to not stick out. Bullshit. The people there wear the same kind of clothes Americans wear in malls and other casual public places. Wearing stuff like a fanny pack or a baseball cap with an American team on it will make you stick out, though.\n**The museum pass is not worth it. It's like 23 euros for one day, and allows unlimited entry into all museums in [[Paris]], but you won't be able to see enough in one day to justify the price.\n**If possible, walk instead of taking the metro. Yeah, the metro is useful, but it's better to walk outside and see the sights instead of sitting in a smelly subway without AC. Besides, you have to walk a lot inside the stations, especially when you switch lines." -surrender\n*''Food''\n**Also in [[Paris]] if you want to splurge on a meal, do it at one of the cafeterias. I ate in [[Belleville]] at my dad's university for like 5 euros and it was excellent. And the stolen food that lasted me another day." -blindfolk\n\n*''In/Near [[Paris]]'':\n**"If you're going to be in [[Paris]], a lot of nice places to visit sit to the north/north-east, all within an hour's drive.\n**[[Parc Asterix]]: The theme park to visit if you want to see one while you're in [[France]]. [[Euro Disney]] is like [[Disneyland]] in [[America|United States of America]], except they finally figured out that they should let people bring in sac lunches and let them drink wine just like in the other parks (one of the huge reasons they were losing money to start is that they didn't cater to the [[European|Europe]] sense of how to enjoy a day at a park). Based on the Comic Asterix & Obelix, the park features tons of different roller coasters and fun spots to visit. Worth the trip if you like amusement parks.\n**If you do decide on [[Euro Disney]], at least go to [[Val d'Europe]]. A mall with an outlet area outside, you can pick up good deals on designer labels and casual wear. They also have stuff like Samsonite and kitchenware if you want to shop for stuff like that. Generally good deals, so check it out.\n** [[Pierrefond]] and [[Chantilly]] castles: Some of the nicer castles in the north of [[France]]; [[Pierrefond]] is massive and can be toured. Michael Jackson even tried to buy this castle, but fortunately the [[French]] authorities wouldn't let him take it apart and leave with it back to his ranch. Deep moats, huge towers, gorgeous rooms, all make it worth visiting if you get the chance. There's also a fun miniature golf course in the town that sits below.\n**As for [[Chantilly]], the city is a typical smaller city with the exception that it has an amazing castle sitting in it. I don't know if this castle can be toured or not, but it's worth the stop for pictures.\n** [[Compiegne]] and [[Napoleon's]] castle: My second home, [[Compiegne]] is a medium sized city north-east of [[Paris]]. The city is known for it's flowered round-abouts and [[Napoloeon's]] massive castle that sits on the north-west side of town. The city is surrounded by forest, too, so there's lots of outdoorsy things to do like mountain biking, trail running, horse-back riding, and walking. There's even a new ropes course that just opened outside the city, so if you're into the higher elevation adventure stuff, it looked pretty good from my quick visit (it was 2 days from opening when I saw it).\n**As for the castle itself, Napoleon the III called it home. This is the Napoleon that everyone knows, not the Napoleon the VII or whatever who lived in [[Pierrefond]]. The castle is massive, and even houses an auto museum that should be seen. Going back to carriages pulled in the 1600s, to bikes that were some of the first invented, to the first motorized cars in [[Europe]], the museum boasts a huge collection of antiques and relics from a different age. For me, the highlight of the auto museum has to be the first car to go over 100 km/h. No steering pretty much, and in the shape of a rocket, the thing looks like suicide on wheels. To think someone exceeded 65 mph in the thing boggles the mind.\n**Other notable facts about the castle include a newly discovered amphitheater featuring incredible acoustics. The story behind the discovery is interesting I guess, considering the thing was an unopened room in the castle for a few hundred years. It's been renovated and now hosts concerts of all types. The other point of interest would be the gardens in front of the castle. The land just in front is beautifully sculpted and planted and can be enjoyed especially in the spring and summer. Also, the land in front is a clear, treeless path for about 14 km straight away from the castle. There's a story basically that Napoleon's wife didn't like the view outside the castle, so Napoleon, overnight, had every single tree cleared in a 200 yard wide by 14 km path. It extends out to a little peak in the distance. Apparently, she was pissed anyway because he killed all the trees." -The Land Baron
http://en.wikipedia.org/wiki/Arles\n\n[[Arles]] is a city in the south of [[France]], in the Bouches-du-Rhône department, of which it is a subprefecture, in the former province of Provence.\n\n| [img[/images/arles.png]] |
[[Art Nouveau]] is an international style of art, architecture and design that peaked in popularity at the beginning of the 20th century (1880-1914) and is characterised by highly-stylised, flowing, curvilinear designs often incorporating floral and other plant-inspired motifs.\n\n| [img[images/art-nouveau.jpg]] |
The [[Hyde Park Hostel|Astor Hyde Park Hostel]] is [[London's|London]] most famous and fun hostel, about 100m away from [[Hyde Park]]. If you are looking for location you don't get better than this. You will be perfectly positioned to visit all the major attractions [[London]] has to offer. You are within walking distance of [[Notting Hill Gate]] (where they shot the movie) and the famous [[Portobello Market]]. [[Kensington Palace]] is on your doorstep, and [[Oxford Street]], [[Piccadilly Circus]] and [[Buckingham Palace]] are all within ten minutes by bus or tube. The Bayswater area is an excellent location for travellers and working holidaymakers. There is a lively main road with many restaurants, bars, cinemas, shops and numerous other facilities.\n\n| [img[images/astor-hyde-park-hostel.jpg]] |
[[Austria]], officially the [[Republic of Austria|Austria]], is a landlocked country in [[Central Europe]]. It borders both [[Germany]] and the [[Czech Republic]] to the north, [[Slovakia]] and [[Hungary]] to the east, [[Slovenia]] and [[Italy]] to the south, and [[Switzerland]] and [[Liechtenstein]] to the west. The capital city is the city of [[Vienna]] on the [[Danube River]].
http://www.gtripping.net/
http://en.wikipedia.org/wiki/Baker_Street\n\n[[Baker Street]] is a street in the [[Marylebone]] district of the City of [[Westminster]] in [[London]]. It forms part of the A41. It is most famous for its connection to the fictional detective [[Sherlock Holmes]], who lived at 221B [[Baker Street]], an address that does not actually exist. The street is named for builder [[William Baker]] who laid the street out in the eighteenth century. It was originally a high class residential address, but now is mainly occupied by commercial premises.\n\n| [img[images/bakerstreet.jpg]] |
http://en.wikipedia.org/wiki/Balkans#Balkan_Peninsula\n\nThe [[Balkans]] are adjoined by water on three sides: the [[Black Sea]] to the east and branches of the [[Mediterranean Sea]] to the south and west.
The [[Balkans]] is the historic and geographic name used to describe a region of southeastern [[Europe]].
http://en.wikipedia.org/wiki/Bankside\n\n[[Bankside]] is an area in [[Southwark]], [[London]], on the southern bank of the [[River Thames|Thames]], situated between [[Blackfriars Bridge]] to the west and [[London Bridge]] to the east. The area has developed considerably as a touristic location in recent years. To the west is [[South Bank]] which is often confused with it, with further attractions, especially in the arts. The [[Millennium Bridge]] makes [[Bankside]] very accessible from the north bank by foot. It is possible to walk along most of the bank next to the river, with many attractions for tourists along the way.\n\n| [img[images/bankside.jpg]] |
http://en.wikipedia.org/wiki/Barbès_-_Rochechouart_(Paris_Métro)\n\n[[Barbès - Rochechouart|Barbès]] is a station of the [[Paris Métro]], serving Line 2 and Line 4. The station is named for the revolutionary [[Armand Barbès]] and the abbess [[Marguerite de Rochechouart]].\n\n| [img[images/barbes.jpg]] |
http://en.wikipedia.org/wiki/Armand_Barbès\n\n[[Armand Barbès]] (1809-1870) was a [[French]] politician, surnamed the Bayard of Democracy; imprisoned in 1848, liberated in 1854; expatriated himself voluntarily; died at the [[Hague]].
http://en.wikipedia.org/wiki/Barcelona\n\n[[Barcelona]] is the capital and most populous city of [[Catalonia]] and the second largest city in [[Spain]], with a population of 1,605,602 in 2006.\n\n[[Contiki]]\n[[Barcelona]] is the capital of the [[Catalan region|Catalonia]] of north-eastern [[Spain]] and next to [[Madrid]], is the second largest city in the country. [[Barcelona]] however is easily the wealthiest of all [[Spanish|Spain]] cities and is primarily a port city perched on the edge of the [[Mediterranean Sea]]. The city is also within easy reach of the nearby islands of [[Ibiza]], [[Majorca]] and [[Menorca]]. [[Barcelona]] promises the allure of hot, wild summer nights, lazy siestas, food, color and flair that [[Spain]] is so well known for. The city is also home to some amazing parks, gardens and buildings in the most has a reputation as being one of the most modern and dynamic cities in [[Europe]].\n\n\n\n[[Something Awful]]\nBarcelona:\n\n\n * "Barcelona is not real Spain, if you ask me." -I Killed Yvette\n * "Barcelona: Taxi's are pretty cheap here. There are some nice bars at the dock with a small irish pub at the 2nd floor." –Fiz\n * "Every night I was there I walked down La Rambla, which is a strip of land that acts, at night, as a vendor's paradise. Trinkets, blown glass, fantasy illustrations, food, it's all put on display and goes on for hours throughout the night. I could've spent every night of my trip there." –Mr Sleep\n * "La Rambla was overrated, but worth the walk once. I stayed at Sea Point in Barceloneta for twenty one euro a night, which was expensive, but when you open the front door you're on the beach. They also have great night walks with friendly young locals as guides who know the best bars and clubs to go to. Girls - if you go on the wednesday night live jazz walk, the guys will be leading you over a strategically placed grate in the ground that will blow your skirts up, so be prepared for a laugh at your expense if you don't wear pants that evening.\n Sea Point also had a sister hostel in the Gothic district called Gothic Point which I thought was significiantly cooler and cheaper, but then again I did have the beach for a front yard at sea point... Either is good for staying at, receptionists speak English, Spanish and French, maybe more.\n Go out to a club called Jamboree if you hear there's live jazz. They also have great music in general, and I had a great time dancing there. Keep an eye out for grafitti in general, since grafitti there has been not just accepted as inevitable, but encouraged as art and some really interesting pieces are waiting for you to discover them. " -poetrywhore, co-OP\n * "IMO, Barcelona is overrated. The city has gorgeous areas (near Port Vell/World Trade Center), but a lot of it is dirty and dingy. The Ramblas, in particular, were underwhelming - just a lot of street performers, little stores peddling crappy overpriced tourist items, and pickpockets. Stick to the area around the Placa Espana.\n If you were expecting Spanish in Barcelona, watch out. Everything is in Catalan, which isn't hard to understand if you speak Spanish, but it can be confusing.\n If you arrive at the airport, you can take a "tren de cercanias" (nearby areas) into the center instead of taking a taxi. It takes the same fare as the metro. Speaking of the metro, you also have to walk a lot inside the stations." -surrender\n * "Walk down Las Ramblas. There you can pay street performers, buy caged birds or the famous flowers, or watch the pickpockets and scam artists fool the less intelligent. It's prettier in the cool morning. At the southern end of the Ramblas, if you do some searching you can find Bosc de les Fades, a bar that looks like an enchanged forest inside. Spend some time down by the harbor and get a glimpse of the statue of Columbus pointing to the New World. The port looks nice lit up at night. Barcelona claims to have the largest aquarium in Europe, and the zoo has the world's only (?) albino gorilla. If you are interested, check out Els Quatre Gats, a hangout of Picasso's. The Museu Picasso showcases his art. Barcelona also has the Fundació Miró, dedicated to another Spanish artist. And my friends tell me there is a marvelous Dalí museum in Figueres, two hours north of Barcelona. Within Barcelona, there is also the Olympic City from when Barcelona played host to the games. Near Barcelona are the Freixenet Caves, where the world-renowned champagne is manufactured. The tour was fun. Barcelona has many examples of very unique and cartoonish architecture by Gaudí. Make it a point to see Parc Güell for the lizard fountain and the famous curved bench. Also Palacio Güell, a house he designed for someone. (Many of the original furnishings were removed, but there are life-size black-and-white cutouts in their place...kinda bizarre.) And of course La Sagrada Familia, the four-spired, unfinished cathedral that basically symbolizes Barcelona. (Honestly, it's not worth standing in line and paying to see the inside. It's THAT unfinished. Just walk around the outside.) It's worth it to see the Roman ruins beneath the Museu de l'Historia de la Ciutat (City's History Museum). The Metro is dirtier and scarier than Madrid's and not as extensive. If you can't see much of Spain, consider going to Barcelona's Poble Espanyol, which has examples of house architecture from many if not all of the 52 provinces of Spain. Don't do the day trip to Montserrat; it is a complete waste of time. Instead, go to Sitges, which is very pretty, has a beautiful beach, and is apparently a hotspot for nightlife, especially for gays. Barcelona is also a good jumping-off point for train connections to the rest of Europe or a daytrip to Andorra, on the border of Spain and France." -I Killed Yvette\n\n| [img[images/barcelona.jpg]] |
The [[Bastille]] was a prison in [[Paris]], known formally as [[Bastille Saint-Antoine—Number 232, Rue Saint-Antoine—|Bastille]] best known today because of the storming of the [[Bastille]] on 14 July 1789, which along with the [[Tennis Court Oath]] is considered the beginning of the [[French Revolution]].\n\n| [img[images/bastille.jpg]] |
http://en.wikipedia.org/wiki/Bavaria\n\nThe geographic region and Free State of [[Bavaria]], with an area of 70,553 km² and almost 12.5 million inhabitants, forms the southernmost and geographically largest state of [[Germany]]. Its capital is [[Munich]].
http://en.wikipedia.org/wiki/Biarritz\n\n[[Biarritz]] is a town and commune which lies on the [[Bay of Biscay]], on the [[Atlantic|Atlantic Ocean]] coast, in southwestern [[France]]. It is a luxurious seaside town and is popular with tourists and surfers. [[Biarritz]] also boasts some of the best beaches in [[Europe]] and has won multiple awards for their top class standards.\n\n| [img[images/biarritz.jpg]] |
http://en.wikipedia.org/wiki/Pamplona\n\n[[Pamplona]] is the capital city of [[Navarre]], [[Spain]] and of the former kingdom of [[Navarre]]. The city is worldwide famous for the [[San Fermín festival]], from July 6 to 14, in which the running of the bulls or encierro is one of the main attractions.\n\n| [img[images/pamplona.jpg]] |
http://en.wikipedia.org/wiki/Bay_of_Biscay\n\nThe Bay of Biscay is a gulf of the North [[Atlantic Ocean]]. It lies along the western coast of [[France]] from [[Brest south]] to the [[Spanish|Spain]] border, and the northern coast of [[Spain]] west to [[Punta de Estaca de Bares]], and is named for the [[Spanish|Spain]] province of [[Biscay]].\n\n| [img[images/bayofbiscay.jpg]] |
http://en.wikipedia.org/wiki/Atlantic\n\nThe [[Atlantic Ocean]] is the second-largest of the world's oceanic divisions; with a total area of about 106.4 million square kilometres, it covers approximately one-fifth of the Earth's surface.
http://en.wikipedia.org/wiki/Zaragoza\n\n[[Zaragoza]], also called [[Saragossa|Zaragoza]] in English, is the capital city of the autonomous community and former [[Kingdom of Aragon|Aragon]], [[Spain]]. It is situated on the river [[Ebro]] and its tributaries, the [[Huerva]] and [[Gállego]], near the centre of the region, in a valley with a variety of landscapes, ranging from desert to thick forest, meadows and mountains.\n\n| [img[images/zaragoza.jpg]] |
[[Contiki]]\n[[London]] is a big city and it can be a little daunting. Even seasoned travellers often find this colourful, cosmopolitan and buzzing city a challenge. [[Contiki’s Basement|Contiki Basement]] in [[London]] your home away from home and is a friendly space for you to chill out, meet other travellers and get your bearings in one of the most exciting cities in the world. Feel free to make use of the services provided by [[Contiki’s|Contiki]] resident staff and use the [[Basement|Contiki Basement]] as your [[London]] launch pad to kick-start your holiday of a lifetime.\n\n''Location''\nThe [[Contiki Basement]] is the [[London]] base for [[Contiki]] Tours in [[Europe]]. ‘The [[Basement|Contiki Basement]]’ is located downstairs in the basement of the [[Royal National Hotel]], [[Bedford Way]], [[London]] (Near [[Russell Square]] tube station) and is the meeting point for [[Contiki]] Tours starting in [[London]].\n\n''Opening Hours''\nThe [[Basement|Contiki Basement]] is open 7 days a week (even public holidays it’s rarely closed) during the following hours:\n*April 1 – September 30 8am – 9pm (Summer Hours)\n*October 1 – 31 March 11am – 7pm (Winter Hours)\n\n''Getting There''\nIf you are staying at the [[Royal National Hotel]] or the [[Imperial Hotel]], simply ask the hotel staff for directions, otherwise… The closest tube to the [[Contiki Basement]] is ‘[[Russell Square]]’ (on the blue Picadilly line – the same line as [[Heathrow Airport]]) and the [[Basement|Contiki Basement]] is about 4 minutes walk from the tube station. Turn left as you exit the [[Russell Square]] Station at the street level. Walk straight ahead along [[Bernard Street]] and cross the road at the traffic lights. Continue walking straight ahead with [[Russell Square]] (a park with a fence around it) on your left side. Turn right half way along [[Russell Square]] onto [[Bedford Way]]. Roughly 40 metres (about 40 yards) along [[Bedford Way]] you will see signs for the [[Basement|Contiki Basement]] and some stairs leading down to the [[Contiki Basement]].\n\n| [img[images/contikibasement.jpg]] |\n\n''Contact the Basement''\n[[Contiki Basement]] – [[London]]\n[[Royal National Hotel]], [[Bedford Way]]\n[[London]] WC1H ODG\nTel: 020 7637 0802\nfax: 020 7637 2121\nemail: basement.rep@contiki.co.uk
http://en.wikipedia.org/wiki/Europe\n\n[[Europe]] is one of the seven traditional continents of the [[Earth]]. Physically and geologically, [[Europe]] is the westernmost peninsula of [[Eurasia]], west of [[Asia]]. [[Europe]] is bounded to the north by the [[Arctic Ocean]], to the west by the [[Atlantic Ocean]], to the south by the [[Mediterranean Sea]], to the southeast by the [[Caucasus Mountains]] and the [[Black Sea]] and the waterways connecting the [[Black Sea]] to the [[Mediterranean]]. To the east, [[Europe]] is generally divided from [[Asia]] by the water divide of the [[Ural Mountains]], the [[Ural River]], and by the [[Caspian Sea]].\n\n| [img[images/maps/europe.jpg]] |
[[Contiki]]\nA great starter for those who have never been to [[Paris]] to highlight what to see the next day. Stunning city and a tour that can last up to 2 and 1/2 hours.\n\n| [img[images/illuminationstour.jpg]] |
http://en.wikipedia.org/wiki/Palace_of_Versailles\n\nThe [[Château de Versailles|Château Versailles]], or simply [[Versailles|Château Versailles]], is a royal château in [[Versailles]], [[France]].\n\n| [img[images/chateauversailles.jpg]] |
[[Contiki]]\nThe [[Eiffel Tower]] was constructed for a Worlds Fair hosted by [[Paris]] and named after its architect and designer [[Gustaf Eiffel]], it perhaps one of the most famous and awe-inspiring icons in the world. At a little over 320 meters high it was the tallest man-made structure in the world when it was completed in 1889. Over 200 million people have visited the Tower since. Many people take to opportunity to take the elevators to the top of the tower for unforgettable views of the ‘City of Light’. Traveling with [[Contiki]] you can do this as a group and save yourself time otherwise spent waiting in the often hours long lines. [[La Tour]] is one of the most instantly recognisable structures not only in the romantic city of [[Paris]], but anywhere in the world.\n\nhttp://en.wikipedia.org/wiki/Eiffel_Tower\n\nThe [[Eiffel Tower]] is an iron tower built on the [[Champ de Mars]] beside the [[River Seine]] in [[Paris]]. The tower has become a global icon of [[France]] and is one of the most recognizable structures in the world.\n\n| [img[images/eiffeltower.jpg]] |
[[Contiki]]\nPossibly the finest example of Gothic architecture anywhere in the world, this amazing church resides in the heart of [[Paris]]. Taking over 180 years to complete it has borne witness to over 650 years of the city’s turbulent history – from [[Napoleons|Napoleon]] coronation to royal weddings and was also home to [[Victor Hugo’s|Victor Hugo]] fictional ‘Hunchback of [[Notre Dame]]’. Free to go inside and look around at he amazing architecture and stained glass, you can also climb the stairs of the famed towers for great views over the city and the chance to get up close and personal with the Cathedral’s gargoyles.\n\nhttp://en.wikipedia.org/wiki/Notre_Dame_de_Paris\n\n[[Notre Dame de Paris|Nortre Dame]], known simply as [[Notre Dame]] in English], is a Gothic cathedral on the eastern half of the [[Île de la Cité]] in [[Paris]], [[France]], with its main entrance to the west. It is still used as a [[Roman Catholic]] cathedral and is the seat of the Archbishop of [[Paris]]. [[Notre Dame de Paris|Notre Dame]] is widely considered one of the finest examples of [[French]] Gothic architecture. It was restored and saved from destruction by [[Viollet-le-Duc]], one of [[France's|France]] most famous architects. The name [[Notre Dame]] means "Our Lady" in [[French|France]].\n\n| [img[images/notredame.jpg]] |
*http://www.astorhostels.com/1-3-405-OH3/Museum_Hostel.html\n*27 Montague Street, Bloomsbury, London\n*Check In: 13:00 - Check Out: 10:00\n*£16.00 deposit paid\n*£144.00 required on arrival (AUD ~$303.617)\n\n*Could have been a 4 bed mixed dorm with swedish underwear models\n
[[Piccadilly Circus]] is a famous road junction and public space of [[London's|London]] [[West End]] in the [[City of Westminster|Westminster]], built in 1819 to connect [[Regent Street]] with the major shopping street of [[Piccadilly]]. In this context a circus, from the Latin word meaning a circle, is a circular open space at a street junction. It now links directly to the theaters on [[Shaftesbury Avenue]] as well as the [[Haymarket]], [[Coventry Street]] (onwards to [[Leicester Square]]) and [[Glasshouse Street]]. The Circus is close to major shopping and entertainment areas in a central location at the heart of the [[West End]]. Its status as a major traffic intersection has made [[Piccadilly Circus]] a busy meeting point and a tourist attraction in its own right. The Circus is particularly known for its video display and neon signs mounted on the corner building on the northern side, as well as the [[Shaftesbury memorial fountain]] and statue of an archer popularly known as [[Eros]] (sometimes called [[The Angel of Christian Charity|Eros]], but intended to be Anteros). It is surrounded by several noted buildings, including the [[London Pavilion]] and [[Criterion Theatre]]. Directly underneath the plaza is [[Piccadilly Circus]] [[London Underground]] station.\n\n| [img[images/799px-Piccadilly_Circus_neon_signs.jpg]] |
http://en.wikipedia.org/wiki/England\n\n[[England]] is the largest and most populous constituent country of the [[United Kingdom]] of [[Great Britain]] and [[Northern Ireland]]. Its inhabitants account for more than 83% of the total population of the [[United Kingdom]], while the mainland territory of [[England]] occupies most of the southern two-thirds of the island of [[Great Britain]] and shares land borders with [[Scotland]] to the north and [[Wales]] to the west. Elsewhere, it is bordered by the [[North Sea]], [[Irish Sea]], [[Celtic Sea]], [[Bristol Channel]] and [[English Channel]].
http://en.wikipedia.org/wiki/United_Kingdom\n\n[[United Kingdom of Great Britain|United Kingdom]] and [[Northern Ireland]], commonly known as the [[United Kingdom]], the [[UK|United Kingdom]], or [[Britain]], is a sovereign island country located off the northwestern coast of mainland [[Europe]] comprising of the four constituent countries; [[England]], [[Scotland]], [[Wales]] and [[Northern Ireland]].\n\n[[Something Awful Tips|Something Awful]]\n*General Info\n**In the UK, "sales tax" is called "VAT" (Value Added Tax), runs at 17.5%, and the government's guide to reclaiming it is here (Cavaradossi)\n**The law has recently changed and magic mushrooms are once again illegal in the UK.\n**Advice for Accents: Don't be offended by someone talking to you in a bizzare accent, we don't all speak like Lord Chistlewick Flanders and they are not being rude. The accent I have the most difficulty with (And I'm English) is Scouser, but thats just because I find it irritating. (LordEvilElmo)\n**Cabbies: Cabbies can be a real pain in the ass in England, as with most countries. Make sure they give you an estimate of the cost of the journey before you hop in. (LordEvilElmo)\n**Most supermarkets in Britain will have a cafeteria in them. This serves REALLY cheap food. Always get the kids meals! They have 3/4 the amount of food as the adults meals and are half the price. (Liface)\n**Get to international flights 2 hours before boarding starts! Heathrow denies boarding if you're not there at least 40 minutes before, and the line for check-in can be long. If you are in this situation, don't be passive. Ask to go to the front of the line! It could be the difference between getting on your flight or being stranded in London for 5 days. (Liface)\n**Look at flybe.com They do much cheaper flights than RyanAir or CheesyJet, it's like £19 from Liverpool to Belfast or to Scotland and you get more legroom too. Bonus: Most of the passengers on the Flybe flights I've used (ie. Liverpool to Belfast) are business people commuting, as opposed to CheesyJet where most of the passengers are pissed up Chavs whos annoyingness and rudeness is only equalled by the Cheesyjet staff themselves. (Lum)\n**RyanAir isn't all that bad, just beware that it's a really cheap airline for a reason. (SonicVenom)\n**Have a look at Trin Tragula's sport post if you're interested in seeing any football, cricket, or rugby matches while travelling.\n\n|>|>| __''Europe Map''__ |h\n| [img[images/maps/unitedkingdom.jpg]] | ''[[E|31st May 2008]]'' | ''[[London]]'' |\n|~| ''[[B|1st June 2008]]'' | ''[[Harrogate]]'' |\n|~| ''[[C|3rd June 2008]]'' | ''[[Edinburgh]]'' |\n|~| ''[[D|5th June 2008]]'' | ''[[Dublin]]'' |
http://en.wikipedia.org/wiki/Buckingham_Palace\n[[Buckingham Palace]] is the official [[London]] residence of the British monarch. The palace is a setting for state occasions and royal entertaining, and a major tourist attraction. It has been a rallying point for the British people at times of national rejoicing and crisis.\n\n| [img[images/Buckingham_Palace,_London,_England,_24Jan04.jpg]] |\n\n[[Lonely Planet Tips|Lonely Planet]]\nBuilt for the Duke of Buckingham in 1703, [[Buckingham Palace]] has been the monarch's main [[London]] pad since 1837. The gaudily furnished State Rooms are open in summer for the hordes of Royal-loving tourists, but it's more fun watching the changing of the guard outside.\n\n[[Something Awful Tips|Something Awful]]\nLandmarks - Parliament, [[Buckingham Palace]]. the [[Tower of London]], [[Admiralty Arch]], [[Trafalgar Square]], [[Leicester Square]] are the ones I'd recommend. They're all pretty close together so my advice is get a travelcard (which lets you use all of [[London's|Londom]] Public transport all day for a flat fee) and get your friend to give you the tour in one day. (Jamesface)
Lonely Planet: the world's best guidebooks, travel advice and information\nhttp://www.lonelyplanet.com/
http://en.wikipedia.org/wiki/Nice\n\n[[Nice]] is a city in southern [[France]] located on the [[Mediterranean]] coast, between [[Marseille]], [[France]], and [[Genoa]], [[Italy]], with 1,197,751 inhabitants in the metropolitan area at the 2007 estimate. The city is a major tourist centre and a leading resort on the [[French Riviera]]. It is the historical capital city of the County of [[Nice]].\n\n''[[Contiki]]''\nCapital and ‘Queen’ of the [[Cote d’Azur]] region of [[French Riviera]], [[Nice]] is situated on the shore of the [[Mediterranean Sea]] and is the quintessential European beach vacation destination.\n\nFamous for it’s long summers, great weather, beautiful beaches and amazing blue waters, it is only a short train or bus ride from other [[Riviera|French Riviera]] destinations. A town of around 100,000 people, the population swells during the summer months when people from all over [[Europe]] flood in for the beaches, summer sun and relaxed lifestyle.\n\n[[Lonely Planet Tips|Lonely Planet]]\nNaughty [[Nice]] is certainly one of the highlights of the [[French Riviera]]. Sun-seekers sip cocktails while reclining on the parasoled lounges lining its pebbled shores, children splash in azure seas and roller-bladers cruise the promenade des Anglais - but [[Nice]] is more than just a beacon for fun in the sun. You'll find some major art museums, the reamins of a ruined [[Roman]] city and a glorious old town to discover, as well as some of the bet restaurants, bars and markets on the Mediterranean. The city is a great base from which to explore the rest of the [[Cote d’Azur]], with some great-value hotels and handy travel links to the rest of the [[Riviera|French Riviera]].\n\n[[Something Awful Tips|Something Awful]]\n"Stayed at Chez Patrick's. Not sure if I would recommend it...I didn't get a good vibe from Patrick. He was friendly and all but I sensed a bit of con artistry in the way he dealt with things. He "forgot" about deposits and made math "mistakes" when giving people change. I'd go somewhere else." -~LucasMedaffy
http://en.wikipedia.org/wiki/Genoa\n\n[[Genoa]] is a city and a seaport in northern [[Italy]], the capital of the Province of [[Genoa]] and of the region of [[Liguria]].\n\n[[Lonely Planet Tips|Lonely Planet]]\nA city of aristocratic [[palazzi]] and malodorous alleyways, of Gothic architecture and industrial sprawl, [[Genoa]] is a compelling place. You need only walk the labyrinthine, sometimes seedy streets of the [[centro storico]] to feel its raw energy. Birth place of [[Christopher Columbus]] and home to [[Europe's|Europe]] largest aquarium, it was once a powerful maritime republic known as [[La Superba]]; nowadays it's a fascinating port city well worth a stopover.\n\n\n[[Something Awful Tips|Something Awful]]\n"Birthplace of [[Christopher Columbus]], and a (comparatively) secluded city in the [[Mediterranean]]. Beautiful, beautiful, weather and some really cute girls who enjoy sunbathing topless at one of the many beaches. Bars are open late and are often beachfront property, meaning you can wander along the beaches at 2am without worrying about being lost. The rich much frequent this place, because when I went down to the harbor in the bay there are at least 10 200+ foot yachts docked. I wish I could tell you more about hotel and hostel accommodations, but I stayed with friends, who generally don't charge very much." -Mr. Sleep\n
http://en.wikipedia.org/wiki/Pisa\n\n[[Pisa]] is a city in [[Tuscany]], central [[Italy]], on the right bank of the mouth of the [[Arno River]] on the [[Ligurian Sea]]. It is the capital city of the Province of [[Pisa]]. The city is known worldwide for its famous bell tower.\n\n| [img[images/pisa.jpg]] |\n\n[[Lonely Planet Tips|Lonely Planet]]\nOne of [[Italy's|Italy]] most recognisable monuments, the [[Leaning Tower of Pisa]] is a genuinely chocking sight. Veering upwards at an alarming angle, it stands in permanent defiance of the laws of gravity. Tower aside, [[Pisa]] is an unassuming university town that while pleasant enough, won't hinder you long.\n\n[[Pisa's|Pisa]] golden age came in the 12th and 13th centuries when it was a maritime power rivallling [[Genoa]] and [[Venice]]. It was eventually defeated by the Genoese in 1284 and, in 1406, fell to [[Florence]]. Under the Medici, the arts and sciences flourished and Galileo Galilei (1564-1642) taught at the university.
[[Singapore]] is an island nation located at the southern tip of the [[Malay Peninsula]]. It lies 137 kilometres (85 mi) north of the equator, south of the Malaysian state of [[Johor]] and north of Indonesia's [[Riau Islands]]. At 704.0 km², it is one of the few remaining city-states in the world and the smallest country in Southeast Asia.\n\ntigerLIVE brynn is not allowed to go but g-man is
Awesome Bridge\n| [img[images/Luzern_Kapellbruecke.jpg]] |
http://en.wikipedia.org/wiki/Harrogate\n\n[[Harrogate]] is a large, wealthy spa town in the [[Harrogate]] district of [[North Yorkshire]] in the [[Yorkshire]] and the Humber region of [[England]]. The local travel links are located less than a mile from the town centre to [[Harrogate]] railway station and 10 miles to [[Leeds Bradford International Airport]]. Also, the main road through the town is the A61, connecting [[Harrogate]] to [[Leeds]] and [[Ripon]]. The town has a population of 85,612 according to the 2001 Census.\n\nThe [[Yorkshire]] town of [[Harrogate]] is a popular tourist destination, attracting visitors with the spa waters, which contain chalybeate, sulfur and saline and the Harlow Carr gardens. The town originated in the 17th century, with High Harrogate and Low Harrogate as two separate settlements.\n\n| [img[images/HarrogateCenotaph(DSPugh)Aug2005.jpg]] |
*http://www.stpancrashotels.co.uk/excel/default.htm\n*16 - 18 Argyle Square, Kings Cross, London ~WC1H 8AS England\n*Check In: 13.00 - Check Out: 11.00\n*£25 deposit paid\n*£85 required on arrival (AUD ~$182.634)
http://en.wikipedia.org/wiki/French_Riviera\n\nThe [[French Riviera]] is one of the most famous resort areas in the world, extending along the [[Mediterranean Sea]] west from [[Menton]] near the [[Italian|Italy]] border, including the cities and towns of [[Monaco]], [[Nice]], [[Antibes]], and [[Cannes]]. Other sources extend the [[Côte d'Azur]] further west to include [[St. Raphaël]], [[Sainte-Maxime]], [[St. Tropez]], [[Hyères]], [[Toulon]], and [[Cassis]].
sdfasdf [[Paris]]
http://en.wikipedia.org/wiki/Florence\n\n[[Florence]] is the capital city of the [[Italian|Italy]] region of [[Tuscany]], and of the province of [[Florence]]. It is the most populated city in [[Tuscany]] with 364,779 people.\n\nFrom 1865 to 1870 the city was also the capital of the Kingdom of [[Italy]]. [[Florence]] lies on the [[Arno River]] and it is known for its history and its importance in the [[Middle Ages]] and in the [[Renaissance]], especially for its art and architecture. A centre of medieval [[European|Europe]] trade and finance, the city is often considered the birthplace of the [[Italian|Italy]] [[Renaissance]] and was long ruled by the Medici family. In fact, the city has been called the [[Athens]] of the [[Middle Ages]].
http://en.wikipedia.org/wiki/Rome\n\n[[Rome]] is the capital city of [[Italy]] and of the [[Lazio]] region, as well as the country's largest and most populous city, with more than 2.7 million residents. The metropolitan area has a population of about 4 million. It is located in the central-western portion of the [[Italian|Italy]] peninsula, where the river [[Aniene]] joins the [[Tiber]]. The Mayor of [[Rome]] is [[Walter Veltroni]].\n\nAn enclave of [[Rome]] is the State of the [[Vatican City]], the sovereign territory of the Holy See. It is the smallest nation in the world, and the capital of the only religion that has representation in the [[United Nations]] (as a non-voting member state).
http://en.wikipedia.org/wiki/Naples,_Italy\n\n[[Naples]] is a historic city in southern [[Italy]], the capital of the [[Campania]] region and the province of [[Naples]]. The city is noted for its rich history, art, culture and gastronomy, playing an important role throughout much of its existence; it is over 2,500 years old. [[Naples]] is located halfway between two volcanic areas, the volcano [[Mount Vesuvius]] and the [[Phlegraean Fields]], sitting on the coast by the [[Gulf of Naples]].
http://en.wikipedia.org/wiki/Corfu\n\n[[Corfu]] is a [[Greek]] island in the [[Ionian Sea]]. It lies off the coast of [[Sarande]], [[Albania]], from which it is separated by straits varying in breadth from 3 to 23 km, including one near ancient [[Butrint]] and a longer one west of [[Thesprotia]]. The island is part of the [[Corfu Prefecture]], and includes twelve of the sixteen municipalities or communes in the prefecture and over 96 percent of its population. The four excluded municipalities are [[Ereikoussa]], [[Mathraki]], [[Othonoi]], and [[Paxoi]], which are all separate islands.
http://en.wikipedia.org/wiki/Venice\n\n[[Venice]] is a city in northern [[Italy]], the capital of region [[Veneto]], and has a population of 271,251. Together with [[Padua]], the city is included in the [[Padua-Venice]] Metropolitan Area.\n\nThe city stretches across 110 small islands in the marshy [[Venetian Lagoon]] along the [[Adriatic Sea]] in northeast [[Italy]]. The saltwater lagoon stretches along the shoreline between the mouths of the [[Po]] (south) and the [[Piave]] (north) Rivers.
http://en.wikipedia.org/wiki/Verona\n\n[[Verona]] is a city and provincial capital in [[Veneto]], Northern [[Italy]]. The ancient town and the center of the modern city are in a loop of the [[Adige River]] near [[Lake Garda]]. Because of this position, the areas saw regular floodings until 1956, when the [[Mori-Torbole]] tunnel was constructed, providing 500 cubic meters of discharge from the [[Adige River]] to [[Lake Garda]] when there was danger of flooding. The tunnel reduced the risk of flooding from once every seventy years to once every two centuries.
http://en.wikipedia.org/wiki/Vienna\n\n[[Vienna]] is the capital of [[Austria]], and also one of the nine states of [[Austria]]. [[Vienna]] is [[Austria's|Austria]] primary city; with a population of about 1.7 million (2.3 million within the metropolitan area), it is by far the largest city in [[Austria]] as well as its cultural, economic and political center. It is the 10th largest city by population in the [[European Union]] and is identified having the 3rd highest quality of living.
http://en.wikipedia.org/wiki/Munich\n\n[[Munich]] is the capital of the [[German|Germany]] state of [[Bavaria]]. There are, in fact, three locations in [[Bavaria]] known as "[[München|Munich]]" - the one referred to as "[[Munich]]", one northeast of Nuremberg, and one north of [[Passau]]. [[Munich]] is located on the [[River Isar]] north of the [[Bavarian Alps]].
http://en.wikipedia.org/wiki/Swiss_Alps\n\nThe [[Swiss Alps]] are the central portion of the Alps mountain range that lies within [[Switzerland]], because of their central position they are also known as [[Central Alps|Swiss Alps]].\n\nThe highest summit in the [[Swiss Alps]] is the [[Dufourspitze]], at 4,634 metres near the Swiss-Italian border. The highest mountain which lies entirely on [[Swiss|Switzerland]] territory is the [[Dom]], at 4,545 metres.
http://en.wikipedia.org/wiki/Heidelberg\n\n[[Heidelberg]] is a city in Baden-Württemberg, [[Germany]]. As of 2005, 140,000 people live within the city's 109 km² area. The town of [[Heidelberg]] is an administrative district of its own. Although not being part of it, the Rhein-Neckar-Kreis, the rural district, which surrounds the town, has its seat in [[Heidelberg]].
http://en.wikipedia.org/wiki/White_Cliffs_of_Dover\n\nThe [[white cliffs of Dover|White Cliffs of Dover]] are cliffs which form part of the [[British]] coastline facing the [[Strait of Dover]] and [[France]]. The cliffs are part of the [[North Downs]] formation. The cliff face, which reaches up to 350 feet high, owes its striking façade to its composition of chalk (pure white calcium carbonate) accentuated by streaks of black flint. The cliffs spread east and west from the town of [[Dover]] in the county of [[Kent]], an ancient and still important [[English|England]] port.\n\nThe cliffs have great symbolic value for [[Britain]] because they face towards Continental [[Europe]] across the narrowest part of the [[English Channel]], where invasions have historically threatened and against which the cliffs form a symbolic guard. Because crossing at [[Dover]] was the primary route to the continent before air travel, the white line of cliffs also formed the first (or last) sight of the UK for travelers.\n\n| [img[images/White_cliffs_of_dover_09_2004.jpg]] |\n
http://en.wikipedia.org/wiki/France\n\n[[France]], officially the French Republic, is a country whose metropolitan territory is located in Western [[Europe]] and that also comprises various overseas islands and territories located in other continents. Metropolitan [[France]] extends from the [[Mediterranean Sea]] to the [[English Channel]] and the [[North Sea]], and from the [[Rhine]] to the [[Atlantic Ocean]]. [[French|France]] people often refer to Metropolitan [[France]] as L’Hexagone (The “Hexagon”) because of the geometric shape of its territory.\n\n\n[[Something Awful Tips|Something Awful]]\nGeneral Info courtesy of The Land Baron:\n*First some helpful hints to blending in and not being labeled the typical American:\n**Dress-code. Honestly, you can wear whatever you want, but if you want to stick out as a tourist, go in the "American outfit": crappy t-shirt, nondescript blue jeans, baseball hat, and white sneakers (and fanny pack if you really want to look like a massive tool). This will at best have you pegged as a tourist and at worst make you a target for pickpockets and thieves. If you want to blend in a little bit, dress a little bit nicer than you normally would, button up shirt, nicer blue jeans or slacks, and some good leather walking shoes or nice stylish sneakers. A smaller cross-shoulder backpack tends to be the norm too, so if you need to carry a lot of stuff look into getting something like this. Again, the fanny pack is like cultural suicide.\n**Speak the language. Now this isn't to say that you *have* to speak French. But knowing some key phrases and trying to sound like you're giving it effort will get you a long way. Rent some french movies before you go and listen to the cadence and inflections they give their language. Try and sound like that. There's nothing worse than a foreigner speaking poor french and not caring about it. The worst thing you can do is expect everyone to speak English and be rude about it. This will get you nowhere fast, so try and realize what it would be like if every time you met someone from a foreign country they expected you to understand their native tongue and were assholes about it to boot. You wouldn't be a big fan of tourists. Most french people will be polite, especially if you are trying. If they see you try to speak french but you can't muster the words, they'll often switch to english and bail you out. Yes, there are some Parisians who are complete assholes, but c'est la vie. How many New Yorkers are known for their friendly helpful attitudes?\n\n*Other tips:\n**Study up on the rules of the road and know what signs mean. Driving in Europe is a different experience (especially when you're 6' 5" and have to squeeze into their tiny little automobiles). First of all, try and get a car that takes Diesel. You'll save a ton of money on gas that way, which is nice when gas averages about 6 dollars a gallon US. As for some common signs you'll see in France:\n Vous n'avez pas la prioritie. You don't have right-of-way, basically. This is important because pretty much every intersection where there is a street on your right that doesn't have a stop sign has right-of-way. This is like in the US, except that people expect you know they have right of way and don't slow down for you. Plus, the streets are smaller, so you often can't see if anyone is speeding down the lane.\n Prioritie a droite. Same as above, but in a situation where you normally would have right-of-way.\n Cedez le passage. Yield.\n Those are the basic ones in French, but there are a ton of signs that are merely just symbols. They often don't exist in the US so it's good to know what "NO PARKING" looks like in international road sign code.\n**Get a metro pass. If you're going to be in Paris for a while, you can get a Metro/RER/Bus pass for a weekend, week, or month. This allows you unlimited rides on some of the better public transportation in the world. You do need to figure out which areas you're going to be in somewhat, because the passes vary in where they'll allow you to travel, but you really, really do not want a car in Paris.\n**Use credit/debit/ATM cards vs. getting cash. The exchange rate is often much better this way. If they try and stick your card into a machine sort of sideways and can't get it to work, you might help them out and let them know that it's an american card. European cards have a little weird RFID thing in them that they use all the time, so they almost never "swipe" cards the traditional way.\n**Bring some sort of blister kit/muscle relaxer for your feet. You'll be walking a lot in Europe, and if you're shoes are new or aren't super supportive, you'll be feeling it after a few days. I was hobbled in Biarritz because I kicked around in flip flops all the time going places and going surfing.\n\n\n*Other things to see in France if you get the chance:\n**A rugby game. This isn't french specific, but the sport is just so odd that you should at least see it once and marvel at the weird rules. My favorite part of the game is when the ball goes out of bounds and they throw it in to people doing a floating chinese ladder. Don't know what I mean? You will once you see it.\n**The sunset from the top of the Eiffel Tower. Amazing in the summer, you realize it's 11 pm and you're watching the sun go down on one of the most beautiful cities in the world. Watch as the lights switch on in the apartments and businesses below. \n\n\nThings you must try eating or drinking in France:\n\n\n * Cheese. Particularly adventurous cheeses would include Roquefort du Papillon, a rich soft cheese that's my favorite; Maroilles, a buttery, stinky cheese like Limburger but without the bad aftertaste; Comté, a harder cheese but delicious (can be bought in the US, too); and any cheese fondue you can find. Combine boiling cheese with bread and you'll have a new favorite dish.\n * Escargot. Snails. Really nothing more than meaty little pieces that soak up butter and garlic. Great if you like butter and garlic. The best part is twisting them out of their tiny shell homes with the little fork/spear.\n * Raclette. Another cheese dish, this is basically a little round electric oven with 6 to 8 slots in which you melt cheese in a tiny triangular pan and then put on potatoes, meat, and vegetables. Great for family and friend get-togethers.\n * Pastis. An annis drink, basically black licorice alcohol with water to decrease its strength. Refreshing in the hot summers.\n * Suze. A different kind of aperitif, you have to try it to see if you like it. A weird combination of bitter, sweet, and musky.\n * Wine. Nothing much to say other than don't be a typical american and order merlot, merlot, merlot, merlot. Expiriment a little.\n\n\nThere are a ton of other things to see, so if you're going to France and want advice feel free to PM or AIM me, especially if you want them from an american and french perspective." -The Land Baron\n\nMore General Info:\n\n\n * "Frenchies are mad about duck, and they cook the little quackers really well.\n Definitely try foie gras, which is duck or goose liver, usually prepared in a pate and served as a crostini. A little sel de gris and bourdeaux and you've got yourself a damn fine primo patti. Duck confit (confit de canard) is a good call for a main course, and its usually served with root vegetables.\n Pork seemed to be less common on menus, but is definitely a staple when it comes to cured meats. One of my favorite sandwiches in the world is just jambon de cru (cooked ham), camembert, aioli (garlic mayonaise) and salt and pepper on a baguette. The Italians have the french beat when it comes to cured meats (prosciutto anyone?), but french breads and pastries are out of the Italian's league.\n Beef (boeuf) is also a good call, whether it be a boeuf bourguignon(kind of like a beef stew) or cote de boeuf (plain old steak). Do yourself a favor and don't insult the cook by ordering a steak well done. And if you walk into a bistro and order steak hache and frites (burger and fries), you should go hang yourself.\n Like in the States, wine is usually really overpriced in restaurants, if you have to have wine, just get the vin ordinaire (table wine) and if you want to try some good stuff, go to a specialty wine store which are fairly common. Marche's (food markets) will usually have a decent selection for cheap.\n Don't get me started on the cheeses. Just walk into a marche, pick up a baguette and grab 5 cheeses that you've never heard of and have fun. It's like an adventure." -sink the biz\n * "CHECK PRICES BEFORE ORDERING ANYTHING AT A RESTAURANT. My dad ordered a beer at a bistro and was charged 8 euros for a Heineken. Sodas and bottled water are also expensive - 3 euros for a 25 cl. bottle, which is nothing. Stick to house wine, which is reasonably priced, or tap water (ask for "l'eau du robinet"), which is free.\n If you're staying in a hotel, try to find a supermarket for water and other drinks. A bottle of water from a cafe will cost you 3 euros, while we paid 26 cents for a similar bottle at a market. Beer is also quite cheap, and you can find any hygenic supplies in case you run out." -surrender
http://en.wikipedia.org/wiki/World_War_I\n\n[[World War I]], also known as the [[First World War|World War I]] and the [[Great War|World War I]], was a global war which took place primarily in [[Europe]] from 1914 to 1918. Over 40 million casualties resulted, including approximately 20 million military and civilian deaths. Over 60 million [[European|Europe]] soldiers were mobilized from 1914 to 1918.
The [[Champs-Élysées]] is the most prestigious and broadest avenue in [[Paris]]. Its full name is "[[Avenue des Champs-Élysées|Champs-Élysées]]". With its cinemas, cafés, and luxury specialty shops, the [[Champs-Élysées]] is one of the most famous streets in the world, and with rents as high as $1.50 million a year for 1,000 square feet of space, it remains the 2nd most expensive strip of real estate in the world (the first in Europe) after [[New York City's|New York City]] [[Fifth Avenue]]. The name refers to the [[Elysian Fields]], the place of the blessed in [[Greek]] mythology.\n\n| [img[images/800px-Champs-Elysees_from_Arc_de_Triomphe.jpg]] |
http://www.lesnocesdejeannette.com/\n\n| [img[images/nj-exterieur-grand.jpg]] | [img[images/OPERAPANO.JPG]] |\n|~| [img[images/CINEPANO.JPG]] |
http://www.lanouvelleeveparis.com/en/\n\n| [img[images/lasalle01.jpg]] | [img[images/angelot.jpg]] |\n| [img[images/lasalle02.jpg]] | [img[images/lasalle04.jpg]] |
http://en.wikipedia.org/wiki/Montmartre\n\n[[Montmartre]] is a hill which is 130 metres high, and also the name of the surrounding district, in the north of [[Paris]] in the 18th arrondissement, a part of the [[Right Bank]], primarily known for the white-domed Basilica of the Sacré Cœur on its summit and as a nightclub district. The other, older, church on the hill is [[Saint Pierre de Montmartre]], which claims to be the location at which the Jesuit order of priests was founded.\n\n| [img[images/398px-Montmartre_jms.jpg]] |
http://en.wikipedia.org/wiki/Leaning_Tower_of_Pisa\n\nThe [[Leaning Tower of Pisa]] or simply The [[Tower of Pisa|Leaning Tower of Pisa]] is the campanile, or freestanding bell tower, of the cathedral of the [[Italian|Italy]] city of [[Pisa]].\n\nAlthough intended to stand vertically, the tower began leaning to the southeast soon after the onset of construction in 1173 due to a poorly laid foundation and loose substrate that has allowed the foundation to shift direction.\n\nThe height of the tower is 55.86 m from the ground on the lowest side and 56.70 m on the highest side. The width of the walls at the base is 4.09 m and at the top 2.48 m. Its weight is estimated at 14,500 tonnes. The tower has 296 or 294 steps ;the seventh floor has two less steps on the north-facing staircase. The tower leans at an angle of 3.97 degrees. This means that the top of the tower is 3.9 meters from where it would stand if the tower were perfectly vertical.\n\n| [img[images/Italy-Pisa-the-Leaning-Tower-closeup-1-RH.jpg]] |
Italy, officially the Italian Republic, is located on the [[Italian Peninsula]] in Southern [[Europe]], and on the two largest islands in the [[Mediterranean Sea]], [[Sicily]] and [[Sardinia]]. [[Italy]] shares its northern Alpine boundary with [[France]], [[Switzerland]], [[Austria]] and [[Slovenia]]. The independent states of [[San Marino]] and the [[Vatican City]] are enclaves within the [[Italian Peninsula]], while [[Campione d'Italia]] is an Italian exclave in [[Switzerland]].
http://en.wikipedia.org/wiki/King's_Cross_railway_station\n\n[[King's Cross station|Kings Cross Station]] is a major railway terminus opened in 1852. The station is located in northeast Central [[London]], on [[Euston Road]], in the [[King's Cross]] district and the [[London Borough of Camden]].\n\n| [img[images/800px-Kings_Cross_Station_Platforms,_London_-_Sept_2007.jpg]] |
http://en.wikipedia.org/wiki/Edinburgh\n\n[[Edinburgh]] is the capital of [[Scotland]], its second largest city after [[Glasgow]] which is situated 45 miles to the west, and one of [[Scotland's|Scotland]] 32 local government council areas.\n\nLocated in the south-east of [[Scotland]], [[Edinburgh]] lies on the east coast of [[Scotland's|Scotland]] Central Belt, along the Firth of Forth, near the North Sea. Owing to its rugged setting and vast collection of Medieval and Georgian architecture, including numerous stone tenements, it is often considered one of the most picturesque cities in Europe.\n\n[[Something Awful Tips|Something Awful]]\n*The castle, some wonderful views, Arthur's Seat, Royal Mile, Cheap hostels (Charlie Brown)\n*Pronounce it "Ed-in-bruh" or else you'll sound like a tourist. (Liface & Gloomiebat)\n*Reccomended hostel: Castle Rock Hostel. Huge lounge, it's like one big party at night, and really comfortable beds. MacBackpackers leaves from this hostel. (Liface)\n*There's free Internet at the library. You may have to reserve a place for later on busy days. (Liface)\n*Travel Glasgow - Edinburgh for £1 with Megabus (Charlie Brown)\n*There are a bunch of adverts for ghost tours along the Royal Mile, but we chose the Underground City Tour instead, which takes you through the tiny chambers, workshops, and medieval houses underneath the city itself. very recommended. (squirrellypoo)\n*The Edinburgh Tattoo is overrated, don't be expecting all bagpipe music as most of it was foreign groups. It's also a big-ass hassle to get into the stands they hold it in. You are literally bottlenecked through a tiny-ass street to get there and get out. Then, when you leave, good luck finding a taxi. My brother literally had to run across the street then dart in front of the thing before someone else claimed it. Some may like it, the show was good enough but don't be expecting "scottish" music primarily. (SonicVenom)\n*Skip the scottish whisky heritage centre and it's crap-ass tour. I'm a whisky afficionado and i wanted to kill the tourguide for not knowing fuck-all. (Junior G-man)
*http://www.smartcityhostels.com/\n*50 Blackfriars Street, Edinburgh, ~EH1 1NE, Tel: +44 (0)870 892 3000\n*Check In: 15:00 - Check Out: 10:00\n* AUD$112.26 paid\n\n| [img[images/maps/smartcityhostels.jpg]] |
[[LONDON RESTAURANTS(they get their own list)|Something Awful Tips: London Restaurants]]\n\n*Belgo Centraal\n*The S&M Café (there are also branches on Portobello Road in Notting Hill Gate, and near Liverpool Street in East London).\n*Garlic & Shots (only if you really, really, really like garlic).\n*Taro - really good Japanese food.\n*Balans, The Gayest Restaurant in the World - there's also the Balans Café which is cheaper just down the road.\n*The Spice of Life does really good modern pub food.\n*Mezzo - this is the £100 a head place. Good food, but full of wankers.\n*Brown's in Covent Garden is really good and again there's a café round the corner which is cheaper.\n*La Perla and its sister restaurant\n*Café Pacifico are two of the best Mexican restaurants in London.\n*Veeraswamy if you like curry.\n*Don't bother buying chinese food anywhere but in Chinatown, behind Leicester Square. All the restaurants there are pretty good so just choose one you like the look of.\n*Patisserie Valerie is really good for a quick lunch or cake break.\n*The Harbour, Islington serves the best calamari in London.\n*Galicia is really good.\n*Gordon Ramsay at Claridges (if you can afford it)\n*The Oxo Tower (if you can afford it)\n*Le Pont de la Tour(if you can afford it) (all above recommendations by Jamesface)\n*Sushi- Don Zoko, Kingly Street OR The Japanese Supermarket, Brewer Street (Lunchtimes only)\n*General wonderfulness - General European style (very romantic) - Andrew Edmunds, Lexington Street\n*French - Mon Plasir, Monmoth Street OR Le Mercury - Upper Street Islington (good if there are lots of you)\n*English - St. John, St John Street (or across from Spitalfields Market - squirrellypoo).\n*BBQ - Bodeans, Poland Street\n*Gastro Pub (hate this phrase) - Lotts Road Pub, Lotts road. OR The Havelock Tavern, Masbro Road\n*Indian - Pretty much anything on Brick lane, take your pick, choose somewhere busy. (do NOT go to the ones offering free beer. it's a one way ticket to gastrointestinal hell. - squirrellypoo)\n*Jewish - The Brick Lane Bagel shop. Especially if you've had a few and want decent food at 5am.\n*Seafood - Randall & Aubin, 16 Brewer Street\n*Chinese - Take your pick in China Town, I like Young Chen on Lisle Street. (all of these by forelle)\n*For cheap eating, well, there are a million sites on the net with restaurant reviews. Sometimes it can be a bit chancy just rocking up somewhere - you never know if you'll discover a gem or get horribly ripped off. My friends and I eat at Wagamama (locations all over the place) and\n*Belgo a lot. Wagamama is an international chain but the food (Oriental/fusion) is beautiful and not too too expensive (£7ish for a main dish), and Belgo's kick-arse £5.95 lunch menu is a godsend (gets you half a kilo of mussels and a beer). Check out the Food and Drink section on Londonist for more ideas, and other random London shit. (~EvilMojoJoJo)
http://en.wikipedia.org/wiki/Dublin\n\n[[Dublin]] is both the largest city and the capital of [[Ireland]]. It is located near the midpoint of [[Ireland's|Ireland]] east coast, at the mouth of the [[River Liffey]] and at the centre of the [[Dublin]] Region. Founded as a Viking settlement, the city has been [[Ireland's|Ireland]] primary city for most of the island's history since medieval times. Today, it is an economic, administrative and cultural centre for the island of [[Ireland]], has been recognised as an emerging global city by the Loughborough University group's 1999 inventory and has one of the fastest growing populations of any European capital city.
*Flight number for trip between [[Edinburgh]] and [[Dublin]]\n*Depart at 03:15pm\n*Flight time is 1 hours\n*Arrive at 04:15am
http://www.aerlingus.com
*http://www.isaacs.ie/jacobs-inn-dublin/home.aspx\n*21-28 Talbot Place, Dublin 1, Ireland\n*Check In: 14:30 - Check Out: 11:00\n*AUD$125.05 paid\n| [img[images/jacobsinn.jpg]] |
*[[Flamenco Evening]] (Euro 30.00)\n**The Spanish are world-famous for their love of dancing. Feast your eyes on the passion and spirit of Flamenco dancing while enjoying a glass of the local specialty - Sangria! Carry on afterwards at one of Barcelona's lively areas where you'll find an exciting array of restaurants and night clubs. Ole!!
*''[[Les Noces de Jeannette]]'' (Euro 33.00)\n**Tonight's traditional restaurant is the perfect place to tempt your taste buds with [[French|France]] cuisine and get to know your fellow travelers. A three course meal with local wine and a great atmosphere means this will be an evening to remember.\n*''[[Nouvelle Eve]]'' (Euro 69.00)\n**Enjoy an evening at [[Nouvelle Eve]], one of the top cabaret shows in [[Paris]]. Situated near [[Montmartre]], the show is an extravaganza of dancing girls, exquisite costumes and comedy acts. Your visit includes half a bottle of champagne and one of the most dazzling 'French Can Can' dances around. A truly [[French|France]] evening that is unforgettable!
*[[Guided Imperial Tour]] (Euro 12.00 (10-19 people)/ Euro 11.00 (20+ people))\n**Join a local guide for an excursion back in time. You'll wander across the cobbled stones of the Roman Forum, marvel at the Colosseum and learn why the glory of Imperial Rome still stands out in the history of Western culture.
*[[T-Shirts]] (From Euro 18.00 - 25.00)\n**Be inspired by the Greek Gods, or better still let your imagination run wild and create your own group design! A terrific souvenir of your tour.\n*[[Car Hire]] (Euro 55.00-155.00 (cost per day depending on car))\n**Why not hire a car and explore this beautiful island and it's beaches? Drive along the coastline, or head inland and discover mountain villages along the way. A day cruising around Corfu will definitely be one of the highlights of your time in Greece. Daily hire rates vary depending on the type/size of car your choose and will be explained by our local Contiki Representative.\n*[[Dinner & Greek Dancing]] (Euro 32.00)\n**Taverna, Retsina and Zorba - it'll certainly be all Greek to you by the end of the evening. Try tasty local specialities such as taramasalata, tzatziki and roast lamb on the spit. Enjoy a colourful and lively folklore show during which you're bound to learn a few Greek steps - all to the sound of bouzouki!\n*[[George's Boat]] (Euro 30.00)\n**Don't miss out on this superb full day trip - it's a great opportunity to get an off-shore view of Corfu's idyllic scenery. We sail up the East Coast, make frequent stops and also drop anchor at a lively seaside resort. A delicious lunch including fresh bread, dips and salads is included to give you energy for a day of fun.\n*[[Watersports]] (From Euro 18.00 - 45.00)\n**Parasailing, water skiing and donut rides are just a few of the great activities available today at Dassia Beach.
*[[Guided Tour of Ancient Pompeii]] (Euro 18.00 (20-34 people)/ Euro 17.00 (35+ people))\n**The once thriving city of Pompeii lay buried for centuries under thick layers of ash which rained down after the eruption of Mount Vesuvius in AD 79. It was rediscovered in the 17th Century and two-thirds of the city has now been excavated. A local guide takes you to the important sites and explains the history of this fascinating city.
*[[Gondola Ride]] (Euro 21.00)\n**No trip to Venice is complete without a ride on the canals in a world-famous gondola. Take in the sights, savour every minute and treasure this truly memorable Venetian experience.
*[[Mozart & Strauss Concert]] (Euro 27.00)\n**Taste the culture of Austria with a truly memorable Mozart and Strauss concert in one of Vienna's most famous concert halls. The show is peformed by a small orchestra and singers in full costume and is the perfect introduction to this 'city of music'. An evening to remember!\n*[[Old Vienna Schnaps Museum]] (Euro 6.00)\n**Founded in 1875 by the Fischer family, this distillery still uses traditional methods when producing schnaps, brandies and liqueurs. The owners will explain the methods of schnaps making and show you the variety of ingredients they use (without giving away their secrets). Finish up by sampling their wonderful creations.
*[[Bavarian Beerhall]] (Euro 21.00)\n**Join us in one of the oldest and most famous beerhalls in Munich, which was established in 1406, for a traditional evening of fun. Taste German specialties including roasted pork knuckle and beer, while watching dancers, yodellers and musicians in full costume. Prost!
*[[Jungfrau Mountain]] (SF 127.00)\n**A fabulous trip on the highest cog railway in the world up the Jungfrau Mountain, which rises to 4,158m (13,600ft). Travel through 7kms (4.2 miles) of tunnel and stop for grand views from the plate glass windows - literally in the North Face of the Eiger Mountain. The journey ends at Jungfraujoch - 3,454m (11,300ft) above sea level with impressive views from the highest railway station and post office in the world! Whatever the time of year, the scenery is fabulous and there's even the opportunity to ski (at a small charge and weather permitting).
*[[Bicycle Ride]] (Euro 5.00)\n**Amsterdam is a city famous for its bicycles so why not join us on a bike ride through the countryside around the little town of Edam. We'll meander along alleyways, over tiny bridges and even stop at a windmill for a photo. Your chance to do as the locals do.\n*[[Wok Culinair Restaurant]] (Euro 25.00)\n**Join us at a local restaurant for a typical Dutch "rice table" which consists of a variety of main dishes accompanied with rice. Good food, good wine and good company - a memorable way to finish your tour.
*[[Contiki Optional Excursions: Paris]]\n*[[Contiki Optional Excursions: Barcelona]]\n*[[Contiki Optional Excursions: Florence]]\n*[[Contiki Optional Excursions: Rome]]\n*[[Contiki Optional Excursions: Pompeii]]\n*[[Contiki Optional Excursions: Corfu]]\n*[[Contiki Optional Excursions: Venice]]\n*[[Contiki Optional Excursions: Vienna]]\n*[[Contiki Optional Excursions: Munich]]\n*[[Contiki Optional Excursions: Swiss Alps]]\n*[[Contiki Optional Excursions: Amsterdam]]\n\n
*[[London]]:\n**Sir John Soane's house\n**British Museum or Museum of London\n**Original Bus Tour\n**Westend Show\n**Wetherspoons Pub\n**The Goose Pub\n**Admiralty Arch\n**Trafalgar Square\n**Leicester Square\n**Buckingham Palace\n**Westminster\n**National Gallery\n**Millennium Bridge \n**Spitfire, Abbot or Newcastle Brown, Theakstones, Eldridge Popes, Old Speckled Hen or London Pride\n\n*[[Edinburgh]]\n**Underground City Tour\n**Bannerman's on the Cowgate Pub\n**The Jolly Judge Pub\n**Greyfriars Bobby Pub\n**The Brass Monkey Pub\n\n*[[Dublin]]\n**Trinity College\n**Havana\n**Guinness Brewery\n**St Stephen's Green\n\n*[[Paris]]\n**Champs-Élysées\n**Sacre-Coeur\n**Tour the Catacombs\n**Louvre\n**Bastille\n**Rodin Museum\n**Buddha Bar\n\n*[[Bordeaux]]\n**D-Day graveyards\n\n*[[Pamplona]]\n\n
http://gtriping.blogspot.com/
/***\n|''Name:''|CommentPlugin|\n|''Source:''|http://sourceforge.net/project/showfiles.php?group_id=150646|\n|''Author:''|Tim Morgan (modified by Bram Chen|\n|''Version:''|1.0.0|\n|''Date:''|Aug 25, 2007|\n|''License:''|[[Creative Commons Attribution-ShareAlike 3.0 License|http://creativecommons.org/licenses/by-sa/3.0/]]|\n|''~CoreVersion:''|2.0.11|\n|''Description:''|Adds "comments" to any TiddlyWiki or adaptation.|\n|~|Used in conjunction with the RecentPlugin, one can have a decent forum environment.|\n\n''Translation sample 1:''\n{{{\nconfig.CommentPlugin.CPlingo = {\n dateFormat: "YYYY年0MM月0DD日 0hh:0mm:0ss",\n CommentInTitle: " 迴響 ",\n comments:"迴響",\n add:"回應 »",\n edit:"編輯",\n tooltips:"發表關於此文的相關意見",\n Title: "%0 迴響 %1",\n CommenteditTemplate: {yourName: "請簽名:", nickName: "(中英文暱稱)", comments: "留言內容:"}\n};\n}}}\n''Translation sample 2:''\n{{{\nconfig.CommentPlugin = {\n CPlingo:{\n dateFormat: "DD MMM YYYY 0hh:0mm:0ss",\n CommentInTitle: " Comment ",\n comments: "comments",\n add: "New Comment Here...",\n edit: "Edit",\n tooltips:" Create a new comment tiddler associated with this tiddler",\n Title: "%0 Comment %1",\n CommenteditTemplate: {yourName: "Your Name: ", nickName: "(nick name)", comments: "Comment: "}\n };\n}}}\n\n''Revision history:''\n* v1.0.0\n** Fixed bug, those tiddlers tagging with some other tiddlers and not tagged with only_on_tags would also be created a comment links with count 0.\n* v0.8.0 (Jan 17, 2007)\n** Some minor changes and bugs fixed (Bram)\n* v0.7.0 (Nov 09, 2006)\n** Minor changes, more easier to be translated (Bram)\n* v0.6.0 (Nov 09, 2006)\n** Runs compatibly with TW 2.1.0+ (Bram)\n* v0.5.0 (Jun 15, 2006)\n** Fixed bug for feature of CommentEditTemplate (bug reported by MilchFlasche, fixed by Bram)\n** Fixed bug in redefined TiddlyWiki.prototype.saveTiddler (Bram)\n* v0.4.0 (Jun 03, 2006) Added CommentEditTemplate (Bram)\n* v0.3.0 (Jun 01, 2006) Some minor changes for readOnly mode (Bram)\n* v0.2.0 (Apr 04, 2006) Fixed bug for only_on_tags (Bram)\n* v0.1.0 (Mar 13, 2006) Modified by Bram Chen.\n***/\n// //''Code section:''\n//{{{\nconfig.CommentPlugin = {\n CPlingo:{\n dateFormat: "DD MMM YYYY 0hh:0mm:0ss",\n CommentInTitle: " Comment ",\n comments: "comments",\n add: "New Comment Here...",\n edit: "Edit",\n tooltips: "Create a new comment tiddler associated with this tiddler",\n Title: "%0 Comment %1",\n CommenteditTemplate: {yourName: "Your Name: ", nickName: "(nick name)", comments: "Comment: "}\n },\n only_on_tags: ['Public'],\n not_on_tags: ['about'],\n // "true" or "false"...\n fold_comments: true,\n default_fold: true,\n max_comment_count: 500\n};\n\nvar CPlingo = config.CommentPlugin.CPlingo;\nconfig.CommentPlugin.only_on_tags.push(CPlingo.comments);\n\nfunction get_parent(tiddler){\n while(tiddler.isTagged(CPlingo.comments)){\n tiddler=store.fetchTiddler(tiddler.tags[0]);\n }\n return tiddler\n};\n\nfunction count_comments(title){\n var tagged=store.getTaggedTiddlers(title);\n var count=0;\n for(var i=0;i<tagged.length;i++){\n if(tagged[i].tags.contains(CPlingo.comments)){\n count+=count_comments(tagged[i].title)+1;\n }\n }\n return count\n};\nconfig.shadowTiddlers.ViewTemplate += "\sn<div class='comments' macro='comments'></div>";\n\nconfig.shadowTiddlers.CommentEditTemplate="<div class='toolbar' macro='toolbar +saveTiddler -cancelTiddler deleteTiddler wikibar'></div><div class='title' macro='view title'></div><div class='editor' macro='edit tags' style='display:none;'></div><div class='GuestSign' >" + CPlingo.CommenteditTemplate.yourName + "<span macro='option txtUserName'></span>" + CPlingo.CommenteditTemplate.nickName + "<br />" + CPlingo.CommenteditTemplate.comments + "</div><div class='editor' macro='edit text'></div>";\nconfig.tiddlerTemplates[3]="CommentEditTemplate"; \nvar COMMENT_EDIT_TEMPLATE = 3;\n\nconfig.shadowTiddlers.CommentPluginStyle = '\sn/*{{{*/\sn.commentTags ul {list-style:none; padding-left:0px; margin: 0 0 3px 0;}\sn.commentTags li {display:inline; color:#999;}\sn.commentTags li a.button {color:#999;}\sn.comment {border-left:1px solid #ccc; margin-top:10px; margin-left:10px; padding:5px;}\sn.newCommentLink {padding-top:10px}\sn.tagging, .selected .tagging, .tiddler .tagging {display:none;}\sn.comment a.button {padding:0px; font-size:smaller; background-color:lightgray;}\sn.comments a.button {background-color:lightgray;}\sn/*}}}*/';\nconfig.shadowTiddlers.StyleSheet += '\sn[[CommentPluginStyle]]';\nconfig.macros.newCommentLink = {\n label: CPlingo.add,\n prompt: CPlingo.tooltips,\n handler: function(place,macroName,params,wikifier,paramString,tiddler) {\n if(tiddler && store.tiddlerExists(tiddler.title) && !readOnly && (!window.zw || zw.loggedIn || zw.anonEdit)) {\n if(tiddler.tags.containsAny(config.CommentPlugin.not_on_tags) || !tiddler.tags.containsAny(config.CommentPlugin.only_on_tags))\n return;\n var onclick = function(e) {\n var e = (e)?e:window.event;\n var theTarget = resolveTarget(e);\n var tagxs = tiddler.title.split(CPlingo.CommentInTitle);\n var title = (tiddler.title.indexOf(CPlingo.CommentInTitle)!=-1)? tagxs[0] : tiddler.title;\n title = CPlingo.Title.format([title,(new Date()).formatString(CPlingo.dateFormat)]);\n var comment = store.createTiddler(title);\n comment.text = '';\n comment.tags = [tiddler.title, CPlingo.comments,'excludeLists'];\n readOnly = false;\n story.displayTiddler(theTarget, title, COMMENT_EDIT_TEMPLATE);\n readOnly = (window.location.protocol == "file:") ? false : config.options.chkHttpReadOnly;\n story.focusTiddler(title,"text");\n return false;\n }\n createTiddlyButton(place, this.label, this.prompt, onclick);\n }\n }\n};\nconfig.macros.comments = {\n dateFormat: CPlingo.dateFormat,\n handler: function(place,macroName,params,wikifier,paramString,tiddler) {\n if(tiddler.title==CPlingo.comments) return;\n var comments = store.getTaggedTiddlers(tiddler.title, 'created');\n var count = count_comments(tiddler.title);\n if(count>0 && !tiddler.tags.contains(CPlingo.comments) && config.CommentPlugin.fold_comments) {\n var show = createTiddlyElement(place, 'p');\n show.innerHTML = '<a href="#" onclick="var e=document.getElementById(\s'comments'+tiddler.title+'\s');e.style.display=e.style.display==\s'block\s'?\s'none\s':\s'block\s';return false;">' + CPlingo.comments +'('+count+') »</a>';\n }\n var place = createTiddlyElement(place, 'div', 'comments'+tiddler.title, 'comments');\n if(count>0 && !tiddler.tags.contains(CPlingo.comments) && config.CommentPlugin.fold_comments && config.CommentPlugin.default_fold)\n place.style.display = 'none';\n else\n place.style.display = 'block';\n for(var i=0; i<comments.length; i++) {\n if(!comments[i].tags.contains(CPlingo.comments))continue;\n var container = createTiddlyElement(place, 'div', null, 'comment');\n var title = createTiddlyElement(container, 'strong');\n var link = createTiddlyLink(title, comments[i].modifier, true);\n createTiddlyElement(title, 'span', null, null, ', '+comments[i].created.formatString(this.dateFormat));\n/* ## remove editable option for security concern\n if(comments[i].modifier == config.options.txtUserName) {\n createTiddlyElement(title, 'span', null, null, ' (');\n var edit = createTiddlyLink(title, comments[i].title);\n edit.innerHTML = CPlingo.edit;\n createTiddlyElement(title, 'span', null, null, ')');\n }\n*/\n wikify('\sn'+comments[i].text+'\sn',container);\n config.macros.comments.handler(container,null,null,null,null,comments[i]);\n }\n readOnly = false;\n config.macros.newCommentLink.handler(place,null,null,null,null,tiddler);\n// wikify('<'+'<newCommentLink>>',place);\n readOnly = (window.location.protocol == "file:") ? false : config.options.chkHttpReadOnly;\n }\n};\nvar CPCloseTiddlers = [];\nTiddlyWiki.prototype.CommentPlugin_saveTiddler = TiddlyWiki.prototype.saveTiddler;\nTiddlyWiki.prototype.saveTiddler = function(title,newTitle,newBody,modifier,modified,tags) {\n tags=(!window.zw && typeof tags == "string") ? tags.readBracketedList() : tags;\n if(tags.contains(CPlingo.comments)){\n newBody=newBody.htmlDecode(); // comment this line, for working with HTMLAreaPackage\n newBody=newBody.substr(0,config.CommentPlugin.max_comment_count);\n newBody=newBody.htmlEncode(); // comment this line, for working with HTMLAreaPackage\n }\n var t = this.CommentPlugin_saveTiddler(title,newTitle,newBody,modifier,modified,tags);\n if(tags.contains(CPlingo.comments)) {\n var original = config.CommentPlugin.default_fold;\n config.CommentPlugin.default_fold = false;\n// story.refreshTiddler(get_parent(t).title, DEFAULT_VIEW_TEMPLATE, true);\n story.refreshTiddler(t.tags[0].split(CPlingo.CommentInTitle)[0], DEFAULT_VIEW_TEMPLATE, true);\n config.CommentPlugin.default_fold = original;\n CPCloseTiddlers.push(newTitle);\n setTimeout("story.closeTiddler(CPCloseTiddlers.pop(), true)", 500);\n }\n return t;\n};\nStory.prototype.chooseTemplateForTiddler = function(title,template)\n{\n if(!template)\n template = DEFAULT_VIEW_TEMPLATE;\n if(template == DEFAULT_VIEW_TEMPLATE\n || template == DEFAULT_EDIT_TEMPLATE\n || template == COMMENT_EDIT_TEMPLATE)\n template = config.tiddlerTemplates[template];\n return template;\n};\n//}}}
/***\n|''Name:''|CommentTabPlugin|\n|''Source:''|[[TiddlyWiki-zh|http://tiddlywiki-zh.googlecode.com/svn/trunk/contributors/BramChen/locales/plugins/]]|\n|''Requires:''|[[CommentPlugin|http://sourceforge.net/project/showfiles.php?group_id=150646]]|\n|''Descriptions:''|Breaks the Timeline tab into "Tiddlers" and "Comments".|\n***/\n//{{{\nfunction in_array(item, arr){for(var i=0;i<arr.length;i++)if(item==arr[i])return true};\nfunction get_parent(tiddler){while(tiddler && in_array(config.CommentPlugin.CPlingo.comments, tiddler.tags)) tiddler=store.fetchTiddler(tiddler.tags[0]);return tiddler};\nconfig.options.txtTimelineTab = 'timelineTab'; // huh?\nconfig.shadowTiddlers.TabTimelineTiddlers = config.shadowTiddlers.TabTimeline;\nconfig.shadowTiddlers.TabTimeline = "<<tabs txtTimelineTab Tiddlers Tiddlers TabTimelineTiddlers "+ config.CommentPlugin.CPlingo.comments + config.CommentPlugin.CPlingo.CommentInTitle + " TabTimelineComments>>";\nconfig.shadowTiddlers.TabTimelineComments = "<<tiddlerComments>>";\n\nconfig.macros.tiddlerComments = {\n dateFormat: 'DD MMM YYYY',\n handler: function(place,macroName,params)\n {\n var field = params[0] ? params[0] : "modified";\n var comments = store.reverseLookup("tags",CPlingo.comments,true,field);\n var lastDay = "";\n for (var c=comments.length-1; c>=0; c--)\n {\n if(comments[c].tags.length == 0) continue;\n var tiddler = get_parent(comments[c]);\n if(!tiddler) continue;\n var theDay = comments[c][field].convertToLocalYYYYMMDDHHMM().substr(0,8);\n if(theDay != lastDay)\n {\n var theDateList = document.createElement("ul");\n place.appendChild(theDateList);\n createTiddlyElement(theDateList,"li",null,"listTitle",comments[c][field].formatString(this.dateFormat));\n lastDay = theDay;\n }\n var theDateListItem = createTiddlyElement(theDateList,"li",null,"listLink",null);\n var link = createTiddlyLink(place,comments[c].title);\n link.innerHTML = comments[c].modifier + ' on ' + tiddler.title;\n link.setAttribute("tiddlyLink",tiddler.title);\n theDateListItem.appendChild(link);\n }\n }\n};\n//}}}
/***\n!Metadata:\n|''Name:''|RecentTiddlersPlugin|\n|''Source:''|http://sourceforge.net/project/showfiles.php?group_id=150646|\n|''Author:''|BramChen (bram.chen (at) gmail (dot) com)|\n|''Version:''|1.1.1|\n|''Date:''|Aug 28, 2007|\n|''License:''|[[Creative Commons Attribution-ShareAlike 3.0 License|http://creativecommons.org/licenses/by-sa/3.0/]]|\n|''~CoreVersion:''|2.1.0|\n|''Description:''|Display DefaultTiddlers and recently modified tiddlers at startup.|\n|''Browser:''|Firefox 1.5+; InternetExplorer 6.0; Opera|\n!Usage:\n>Just to set the options by changing the slice values in RecentTiddlersOptions, if needed.\n!Revision History:\n|''Version''|''Date''|''Note''|\n|1.1.1|Aug 28, 2007|No more hijeck core restart()|\n|1.1.0|Aug 25, 2007|Easy to change the options by using tiddler slices, defined in RecentTiddlersOptions|\n|1.0.0|Apr 18, 2007|Initial release, codes reworked from Tim Morgan's RecentPlugin |\n!Code section:\n***/\n//{{{\nversion.extensions.recentTiddlers = {major: 1, minor: 1, revision: 1, date: new Date("Aug 28, 2007")};\n\nconfig.recentTiddlers = {\n maxNums: 5,\n includeTags: ['*'],\n excludeTags: ['systemConfig','systemTiddlers', 'excludeLists']\n};\n\nconfig.shadowTiddlers.RecentTiddlersOptions = 'maxNums: 5\snincludeTags: *\snexcludeTags: systemConfig,systemTiddlers,excludeLists';\n\nconfig.recentTiddlers.getRecents = function (){\n var c = store.getTiddlerSlices('RecentTiddlersOptions',['maxNums','includeTags','excludeTags']);\n var maxNums = (c.maxNums) ? parseInt(c.maxNums) : config.recentTiddlers.maxNums;\n var includeTags = (c.includeTags) ? c.includeTags.split(',') : config.recentTiddlers.includeTags;\n var excludeTags = (c.excludeTags) ? c.excludeTags.split(',') : config.recentTiddlers.excludeTags;\n var CPlingo = (config.CommentPlugin !== undefined)?config.CommentPlugin.CPlingo:null;\n var rs = store.getTiddlerText("DefaultTiddlers").readBracketedList();\n var tiddlers = store.getTiddlers("modified");\n var n = tiddlers.length -1 - maxNums;\n\n for (var t=tiddlers.length-1; t>n && t>0; t--){\n if(CPlingo !== null && tiddlers[t].isTagged(CPlingo.comments)) {\n var tt = tiddlers[t].title.split(CPlingo.CommentInTitle)[0];\n if(store.tiddlerExists(tt))\n rs.pushUnique(tt);\n }\n else {\n if (tiddlers[t].tags.containsAny(excludeTags))\n n--;\n else {\n if (includeTags.length == 0 || includeTags[0] == '*' || tiddlers[t].tags.containsAny(includeTags))\n rs.pushUnique(tiddlers[t].title);\n }\n }\n }\n return rs;\n};\n\nif(!window.location.hash)\n var recentInterval = setInterval(function(){if(story) {clearInterval(recentInterval); story.closeAllTiddlers();story.displayTiddlers(null,config.recentTiddlers.getRecents());};},100);\n\n//}}}
/***\n|''Name:''|WikiBar|\n|''Version:''|2.0.0 beta3|\n|''Source:''|[[AiddlyWiki|http://aiddlywiki.sourceforge.net]]|\n|''Author:''|[[Arphen Lin|mailto:arphenlin@gmail.com]]|\n|''Type:''|toolbar macro command extension|\n|''Required:''|TiddlyWiki 2.0.0 beta6|\n!Description\nWikiBar is a toolbar that gives access to most of TiddlyWiki's formatting features with a few clicks. It's a handy tool for people who are not familiar with TiddlyWiki syntax.\nBesides, with WikiBar-addons, users can extend the power of WikiBar.\n!Support browser\n*Firefox 1.5\n!Revision history\n*v2.0.0 beta3 (2005/12/30)\n** remove macros (replaced by TWMacro addon)\n** add wikibar command in toolbar automatically\n** rename DOIT to HANDLER\n** rename TIP to TOOLTIP\n*v2.0.0 beta2 (2005/12/21)\n** re-design Wikibar addon framework\n*v2.0.0 beta1 (2005/12/14)\n** Note:\n*** WikiBarPlugin is renamed to WikiBar\n** New Features:\n*** support TiddlyWiki 2.0.0 template mechanism\n*** new wikibar data structure\n*** new wikibar-addon framework for developers\n**** support dynamic popup menu generator\n*** support most new macros added in TiddlyWiki 2.0.0\n*** multi-level popup menu\n*** fix wikibar tab stop\n*** remove paletteSelector\n** Known Bugs:\n*** popup-menu and color-picker can't be closed correctly\n*** some macros can't be displayed correctly in previewer\n*** text in previewer will be displayed italic\n*v1.2.0 (2005/11/21)\n**New Features:\n***User defined color palettes supported\n####Get color palettes from [[ColorZilla Palettes|http://www.iosart.com/firefox/colorzilla/palettes.html]].\n####Save the palette file(*.gpl) as a new tiddler and tag it with 'ColorPalettes', then you can use it in WikiBar.\n***WikiBar style sheet supported\n***Click on document to close current colorPicker, paletteSelector or aboutWikibar\n*v1.1.1 (2005/11/03)\n**Bugs fixed:\n***'Not enough parameters!' message is displayed when the parameter includes '%+number', ex: 'hello%20world!'\n*v1.1.0 (2005/11/01)\n**Bugs fixed:\n***WikiBar overruns (reported by by GeoffS <gslocock@yahoo.co.uk>)\n**New features:\n***Insert a color code at the cursor. (Thanks to RunningUtes <RunningUtes@gmail.com>)\n***Enable gradient macro. (Thanks to RunningUtes <RunningUtes@gmail.com>)\n***Insert tiddler comment tags {{{/% ... %/}}}. (new feature supported by TiddlyWiki 1.2.37)\n***Insert DateFormatString for {{{<<today>>}}} macro. (new feature supported by TiddlyWiki 1.2.37)\n**Enhanced:\n***Allow optional parameters in syntax.\n**Bugs:\n***'Not enough parameters!' message is displayed when the parameter includes '%+number', ex: 'hello%20world!'\n*v1.0.0 (2005/10/30)\n**Initial release\n!Code\n***/\n//{{{\nconfig.macros.wikibar = {major: 2, minor: 0, revision: 0, beta: 3, date: new Date(2005,12,30)};\nconfig.macros.wikibar.handler = function(place,macroName,params,wikifier,paramString,tiddler){\n if(!(tiddler instanceof Tiddler)) {return;}\n story.setDirty(tiddler.title,true);\n place.id = 'wikibar'+tiddler.title;\n place.className = 'toolbar wikibar';\n};\nfunction wikibar_install(){\n config.commands.wikibar = {\n text: 'wikibar',\n tooltip: 'wikibar on/off',\n handler: function(e,src,title) {\n if(!e){ e = window.event; }\n var theButton = resolveTarget(e);\n theButton.id = 'wikibarButton'+title;\n wikibarPopup.remove();\n wikibar_installAddons(theButton, title);\n wikibar_createWikibar(title);\n return(false);\n }\n };\n config.shadowTiddlers['EditTemplate'] = wikibar_addWikibarCommand(config.shadowTiddlers['EditTemplate']);\n var tiddler = store.getTiddler('EditTemplate');\n if(tiddler){\n tiddler.text = wikibar_addWikibarCommand(tiddler.text);\n }\n}\nfunction wikibar_installAddons(theButton, title){\n var tiddlers = store.getTaggedTiddlers('wikibarAddons');\n if(!tiddlers) { return; }\n theButton.addons=[];\n for(var i=0; i<tiddlers.length; i++){\n try{\n eval(tiddlers[i].text);\n try{\n wikibar_addonInstall(title);\n wikibar_addonInstall = null;\n theButton.addons.push({ok:true, name:tiddlers[i].title});\n }catch(ex){\n theButton.addons.push({ok:false, name:tiddlers[i].title, error:ex});\n }\n }catch(ex){\n theButton.addons.push({ok:false, name:tiddlers[i].title, error:ex});\n }\n }\n}\nfunction wikibar_addWikibarCommand(tiddlerText){\n var div = document.createElement('div');\n div.style.display = 'none';\n div.innerHTML = tiddlerText;\n for(var i=0; i<div.childNodes.length; i++){\n var o=div.childNodes[i];\n if(o.tagName==='DIV'){\n if(o.className=='toolbar'){\n var macroText = o.getAttribute('macro').trim();\n if(macroText.search('wikibar')<=0){\n macroText += ' wikibar';\n o.setAttribute('macro', macroText);\n }\n break;\n }\n }\n }\n return div.innerHTML.replace(/\s"/g, "\s'");\n}\nfunction wikibar_processSyntaxParams(theSyntax, params){\n try{\n var pcr = 'AplWikibarPcr';\n var rx=null;\n var allParams=null;\n if(params){\n if(typeof(params)=='object'){\n for(var i=0; i<params.length; i++){\n if(params[i]){\n params[i] = params[i].replace(new RegExp('%','g'), pcr).trim();\n rx = '(\s\s[%'+(i+1)+'\s\s])' + '|' + '(%'+(i+1)+')';\n theSyntax = theSyntax.replace(new RegExp(rx,'g'), params[i] );\n }\n }\n allParams = params.join(' ').trim();\n }else{\n allParams = params.replace(new RegExp('%','g'), pcr).trim();\n rx = /(\s[%1{1}\s])|(%1{1})/g;\n theSyntax = theSyntax.replace(rx, allParams);\n }\n }\n if(allParams){\n theSyntax = theSyntax.replace(new RegExp('%N{1}','g'), allParams);\n }\n rx=/\s[%(([1-9]{1,}[0-9]{0,})|(N{1}))\s]/g;\n theSyntax = theSyntax.replace(rx, '');\n rx=/%(([1-9]{1,}[0-9]{0,})|(N{1}))/g;\n if( theSyntax.match(rx) ){\n throw 'Not enough parameters! ' + theSyntax;\n }\n theSyntax=theSyntax.replace(new RegExp(pcr,'g'), '%');\n return theSyntax;\n } catch(ex){\n return null;\n }\n}\nfunction wikibar_resolveEditItem(tiddlerWrapper, itemName){\n if(tiddlerWrapper.hasChildNodes()){\n var c=tiddlerWrapper.childNodes;\n for(var i=0; i<c.length; i++){\n var txt=wikibar_resolveEditItem(c[i], itemName);\n if(!txt){\n continue;\n }else{\n return txt;\n }\n }\n }\n return ((tiddlerWrapper.getAttribute && tiddlerWrapper.getAttribute('edit')==itemName)? tiddlerWrapper : null);\n}\nfunction wikibar_resolveEditItemValue(tiddlerWrapper, itemName){\n var o = wikibar_resolveEditItem(tiddlerWrapper, itemName);\n return (o? o.value.replace(/\sr/mg,'') : null);\n}\nfunction wikibar_resolveTiddlerEditorWrapper(obj){\n if(obj.id=='tiddlerDisplay'){return null;}\n if((obj.getAttribute && obj.getAttribute('macro')=='edit text')){return obj;}\n return wikibar_resolveTiddlerEditorWrapper(obj.parentNode);\n}\nfunction wikibar_resolveTiddlerEditor(obj){\n if(obj.hasChildNodes()){\n var c = obj.childNodes;\n for(var i=0; i<c.length; i++){\n var o=wikibar_resolveTiddlerEditor(c[i]);\n if(o){ return o;}\n }\n }\n return ((obj.getAttribute && obj.getAttribute('edit')=='text')? obj : null);\n}\nfunction wikibar_resolveTargetButton(obj){\n if(obj.id && obj.id.substring(0,7)=='wikibar'){ return null; }\n if(obj.tiddlerTitle){\n return obj;\n }else{\n return wikibar_resolveTargetButton(obj.parentNode);\n }\n}\nfunction wikibar_isValidMenuItem(tool){\n if(!tool){ return false; }\n if(tool.TYPE=='MENU' || tool.TYPE=='MAIN_MENU'){\n for(var key in tool){\n if(key.substring(0,8)=='DYNAITEM'){ return true; }\n if(wikibar_isValidMenuItem(tool[key])){ return true; }\n }\n return false;\n }else{\n return (tool.HANDLER? true : false);\n }\n}\nfunction wikibar_editFormat(param){\n var editor = param.button.editor;\n var params = param.params;\n clearMessage();\n if(!editor){ return; }\n var repText = wikibar_processSyntaxParams(this.syntax, params);\n if(repText===null){ return; }\n var st = editor.scrollTop;\n var ss = editor.selectionStart;\n var se = editor.selectionEnd;\n var frontText= '';\n var endText = '';\n var fullText = editor.value;\n if(se>ss && ss>=0){\n frontText = fullText.substring(0, ss);\n endText = fullText.substring(se, fullText.length);\n }\n else if(ss===0 && (se===0 || se == fullText.length) ){\n endText = fullText;\n }\n else if(se==ss && ss>0){\n frontText = fullText.substring(0, ss);\n endText = fullText.substring(se, fullText.length);\n }\n if(repText.indexOf('user_text')>=0 && this.hint){\n repText = repText.replace('user_text', this.hint);\n }\n editor.value = frontText + repText + endText;\n editor.selectionStart = ss;\n editor.selectionEnd = ss + repText.length;\n editor.scrollTop = st;\n editor.focus();\n}\nfunction wikibar_editFormatByWord(param){\n var editor = param.button.editor;\n var params = param.params;\n clearMessage();\n if(!editor){return;}\n var repText = wikibar_processSyntaxParams(this.syntax, params);\n if(repText===null){ return; }\n var st = editor.scrollTop;\n var ss = editor.selectionStart;\n var se = editor.selectionEnd;\n var frontText= '';\n var selText = '';\n var endText = '';\n var fullText = editor.value;\n if(se>ss && ss>=0){\n frontText = fullText.substring(0, ss);\n selText = fullText.substring(ss,se);\n endText = fullText.substring(se, fullText.length);\n }\n else if(ss===0 && (se===0 || se == fullText.length) ){\n endText = fullText;\n }\n else if(se==ss && ss>0){\n frontText = fullText.substring(0, ss);\n endText = fullText.substring(se, fullText.length);\n if(!( fullText.charAt(ss-1).match(/\sW/gi) || fullText.charAt(ss).match(/\sW/gi) )){\n var m = frontText.match(/\sW/gi);\n if(m){\n ss = frontText.lastIndexOf(m[m.length-1])+1;\n }\n else{\n ss = 0;\n }\n m = endText.match(/\sW/gi);\n if(m){\n se += endText.indexOf(m[0]);\n }\n else{\n se = fullText.length;\n }\n frontText = fullText.substring(0, ss);\n endText = fullText.substring(se, fullText.length);\n selText = fullText.substring(ss,se);\n }\n }\n if(selText.length>0){\n repText = repText.replace('user_text', selText);\n }\n if(repText.indexOf('user_text')>=0 && this.hint){\n repText = repText.replace('user_text', this.hint);\n }\n editor.value = frontText + repText + endText;\n editor.selectionStart = ss;\n editor.selectionEnd = ss + repText.length;\n editor.scrollTop = st;\n editor.focus();\n}\nfunction wikibar_editFormatByCursor(param){\n var editor = param.button.editor;\n var params = param.params;\n clearMessage();\n if(!editor){ return; }\n var repText = wikibar_processSyntaxParams(this.syntax, params);\n if(repText===null){ return; }\n var st = editor.scrollTop;\n var ss = editor.selectionStart;\n var se = editor.selectionEnd;\n var frontText= '';\n var endText = '';\n var fullText = editor.value;\n if(se>ss && ss>=0){\n frontText = fullText.substring(0, ss);\n endText = fullText.substring(se, fullText.length);\n }\n else if(ss===0 && (se===0 || se == fullText.length) ){\n endText = fullText;\n }\n else if(se==ss && ss>0){\n frontText = fullText.substring(0, ss);\n endText = fullText.substring(se, fullText.length);\n }\n if(repText.indexOf('user_text')>=0 && this.hint){\n repText = repText.replace('user_text', this.hint);\n }\n editor.value = frontText + repText + endText;\n editor.selectionStart = ss;\n editor.selectionEnd = ss + repText.length;\n editor.scrollTop = st;\n editor.focus();\n}\nfunction wikibar_editFormatByLine(param){\n var editor = param.button.editor;\n var params = param.params;\n clearMessage();\n if(!editor){ return; }\n var repText = wikibar_processSyntaxParams(this.syntax, params);\n if(repText===null){ return; }\n var st = editor.scrollTop;\n var ss = editor.selectionStart;\n var se = editor.selectionEnd;\n var frontText= '';\n var selText = '';\n var endText = '';\n var fullText = editor.value;\n if(se>ss && ss>=0){\n if(this.byBlock){\n frontText = fullText.substring(0, ss);\n selText = fullText.substring(ss,se);\n endText = fullText.substring(se, fullText.length);\n }\n else{\n se = ss;\n }\n }\n if(ss===0 && (se===0 || se == fullText.length) ){\n var m=fullText.match(/(\sn|\sr)/g);\n if(m){\n se = fullText.indexOf(m[0]);\n }else{\n se = fullText.length;\n }\n selText = fullText.substring(0, se);\n endText = fullText.substring(se, fullText.length);\n }\n else if(se==ss && ss>0){\n frontText = fullText.substring(0, ss);\n endText = fullText.substring(se, fullText.length);\n m = frontText.match(/(\sn|\sr)/g);\n if(m){\n ss = frontText.lastIndexOf(m[m.length-1])+1;\n }\n else{\n ss = 0;\n }\n m = endText.match(/(\sn|\sr)/g);\n if(m){\n se += endText.indexOf(m[0]);\n }\n else{\n se = fullText.length;\n }\n frontText = fullText.substring(0, ss);\n selText = fullText.substring(ss,se);\n endText = fullText.substring(se, fullText.length);\n }\n if(selText.length>0){\n repText = repText.replace('user_text', selText);\n }\n if(repText.indexOf('user_text')>=0 && this.hint){\n repText = repText.replace('user_text', this.hint);\n }\n if(this.byBlock){\n if( (frontText.charAt(frontText.length-1)!='\sn') && ss>0 ){\n repText = '\sn' + repText;\n }\n if( (endText.charAt(0)!='\sn') || se==fullText.length){\n repText += '\sn';\n }\n }\n editor.value = frontText + repText + endText;\n editor.selectionStart = ss;\n editor.selectionEnd = ss + repText.length;\n editor.scrollTop = st;\n editor.focus();\n}\nfunction wikibar_editFormatByTableCell(param){\n var editor = param.button.editor;\n var params = param.params;\n clearMessage();\n if(!editor){ return; }\n var repText = wikibar_processSyntaxParams(this.syntax, params);\n if(repText===null){ return; }\n var st = editor.scrollTop;\n var ss = editor.selectionStart;\n var se = editor.selectionEnd;\n var frontText= '';\n var selText = '';\n var endText = '';\n var fullText = editor.value;\n if(ss===0 || ss==fullText.length){\n throw 'not valid cell!';\n }\n se=ss;\n frontText = fullText.substring(0, ss);\n endText = fullText.substring(se, fullText.length);\n i=frontText.lastIndexOf('\sn');\n j=frontText.lastIndexOf('|');\n if(i>j || j<0){\n throw 'not valid cell!';\n }\n ss = j+1;\n i=endText.indexOf('\sn');\n j=endText.indexOf('|');\n if(i<j || j<0){\n throw 'not valid cell!';\n }\n se += j;\n frontText = fullText.substring(0, ss-1);\n selText = fullText.substring(ss,se);\n endText = fullText.substring(se+1, fullText.length);\n if(this.key.substring(0,5)=='align'){\n selText = selText.trim();\n if( selText=='>' || selText=='~' || selText.substring(0,8)=='bgcolor(') {return; }\n }\n if(selText.length>0){\n repText = repText.replace('user_text', selText);\n }\n if(repText.indexOf('user_text')>=0 && this.hint){\n repText = repText.replace('user_text', this.hint);\n }\n editor.value = frontText + repText + endText;\n editor.selectionStart = ss;\n editor.selectionEnd = ss + repText.length - 2;\n editor.scrollTop = st;\n editor.focus();\n}\nfunction wikibar_editSelectAll(param){\n var editor = param.button.editor;\n editor.selectionStart = 0;\n editor.selectionEnd = editor.value.length;\n editor.scrollTop = 0;\n editor.focus();\n}\nfunction wikibar_doPreview(param){\n var theButton = param.button;\n var editor = param.button.editor;\n var wikibar = theButton.parentNode;\n if(!wikibar) { return; }\n title = theButton.tiddlerTitle;\n var editorWrapper = wikibar_resolveTiddlerEditorWrapper(editor);\n var tiddlerWrapper = editorWrapper.parentNode;\n var previewer = document.getElementById('previewer'+title);\n if(previewer){\n previewer.parentNode.removeChild(previewer);\n editorWrapper.style.display = 'block';\n visible=true;\n }else{\n previewer = document.createElement('div');\n previewer.id = 'previewer'+title;\n previewer.className = 'viewer previewer';\n previewer.style.height = (editor.offsetHeight) + 'px';\n wikify(editor.value, previewer);\n tiddlerWrapper.insertBefore(previewer, editorWrapper);\n editorWrapper.style.display = 'none';\n visible=false;\n }\n var pv=null;\n for(var i=0; i<wikibar.childNodes.length; i++){\n try{\n var btn = wikibar.childNodes[i];\n if(btn.toolItem.key == 'preview'){ pv=btn; }\n if(btn.toolItem.key != 'preview'){\n btn.style.display = visible ? '': 'none';\n }\n }catch(ex){}\n }\n if(!pv) { return; }\n if(visible){\n pv.innerHTML = '<font face=\s"verdana\s">∞</font>';\n pv.title = 'preview current tiddler';\n }\n else{\n pv.innerHTML = '<font face=\s"verdana\s">←</font>';\n pv.title = 'back to editor';\n }\n}\nfunction wikibar_doListAddons(param){\n clearMessage();\n var title = param.button.tiddlerTitle;\n var wikibarButton = document.getElementById('wikibarButton'+title);\n var ok=0, fail=0;\n for(var i=0; i<wikibarButton.addons.length; i++){\n var addon=wikibarButton.addons[i];\n if(addon.ok){\n displayMessage('[ o ] '+addon.name);\n ok++;\n }\n else{\n displayMessage('[ x ] '+addon.name + ': ' + addon.error);\n fail++;\n }\n }\n displayMessage('---------------------------------');\n displayMessage(ok + ' ok ; ' + fail + ' failed');\n}\nfunction wikibar_getColorCode(param){\n var cbOnPickColor = function(colorCode, param){\n param.params = colorCode;\n param.button.toolItem.doMore(param);\n };\n wikibarColorTool.openColorPicker(param.button, cbOnPickColor, param);\n}\nfunction wikibar_getLinkUrl(param){\n var url= prompt('Please enter the link target', (this.param? this.param : ''));\n if (url && url.trim().length>0){\n param.params = url;\n this.doMore(param);\n }\n}\nfunction wikibar_getTableRowCol(param){\n var rc= prompt('Please enter (rows x cols) of the table', '2 x 3');\n if (!rc || (rc.trim()).length<=0){ return; }\n var arr = rc.toUpperCase().split('X');\n if(arr.length != 2) { return; }\n for(var i=0; i<arr.length; i++){\n if(isNaN(arr[i].trim())) { return; }\n }\n var rows = parseInt(arr[0].trim(), 10);\n var cols = parseInt(arr[1].trim(), 10);\n var txtTable='';\n for(var r=0; r<rows; r++){\n for(var c=0; c<=cols; c++){\n if(c===0){\n txtTable += '|';\n }else{\n txtTable += ' |';\n }\n }\n txtTable += '\sn';\n }\n if(txtTable.trim().length>0){\n param.params = txtTable.trim();\n this.doMore(param);\n }\n}\nfunction wikibar_getMacroParam(param){\n var p = prompt('Please enter the parameters of macro \s"' + this.key + '\s":' +\n '\snSyntax: ' + this.syntax +\n '\sn\snNote: '+\n '\sn%1,%2,... - parameter needed'+\n '\sn[%1] - optional parameter'+\n '\sn%N - more than one parameter(1~n)'+\n '\sn[%N] - any number of parameters(0~n)'+\n '\sn\snPS:'+\n '\sn1. Parameters should be seperated with space character'+\n '\sn2. Use \s" to wrap the parameter that includes space character, ex: \s"hello world\s"'+\n '\sn3. Input the word(null) for the optional parameter ignored',\n (this.param? this.param : '') );\n if(!p) { return; }\n p=p.readMacroParams();\n for(var i=0; i<p.length; i++){\n var s=p[i].trim();\n if(s.indexOf(' ')>0){ p[i]="'"+s+"'"; }\n if(s.toLowerCase()=='null'){ p[i]=null; }\n }\n param.params = p;\n this.doMore(param);\n}\nfunction wikibar_getMorePalette(unused){\n clearMessage();\n displayMessage('Get more color palettes(*.gpl) from ColorZilla Palettes site', 'http:\s/\s/www.iosart.com/firefox/colorzilla/palettes.html');\n displayMessage('Save it as a new tiddler with \s"ColorPalettes\s" tag');\n}\nfunction wikibar_createWikibar(title){\n var theWikibar = document.getElementById('wikibar' + title);\n if(theWikibar){\n if(theWikibar.hasChildNodes()){\n theWikibar.style.display = (theWikibar.style.display=='block'? 'none':'block');\n return;\n }\n }\n var tiddlerWrapper = document.getElementById('tiddler'+title);\n var theTextarea = wikibar_resolveTiddlerEditor(tiddlerWrapper);\n if(!theTextarea){\n clearMessage();\n displayMessage('WikiBar only works in tiddler edit mode now');\n return;\n }else{\n if(!theTextarea.id){ theTextarea.id = 'editor'+title; }\n if(!theTextarea.parentNode.id){ theTextarea.parentNode.id='editorWrapper'+title; }\n }\n if(theWikibar){\n theWikibar = document.getElementById('wikibar'+title);\n }else{\n var editorWrapper = wikibar_resolveTiddlerEditorWrapper(theTextarea);\n theWikibar = createTiddlyElement(tiddlerWrapper, 'div', 'wikibar'+title, 'toolbar');\n addClass(theWikibar, 'wikibar');\n var previewer = document.getElementById('previewer'+title);\n if(previewer){\n tiddlerWrapper.insertBefore(theWikibar, previewer);\n }else{\n tiddlerWrapper.insertBefore(theWikibar, editorWrapper);\n }\n }\n wikibar_createMenu(theWikibar,wikibarStore,title,theTextarea);\n if(config.options['chkWikibarSetEditorHeight'] && config.options['txtWikibarEditorRows']){\n theTextarea.rows = config.options['txtWikibarEditorRows'];\n }\n setStylesheet(\n '.wikibar{text-align:left;visibility:visible;margin:2px;padding:1px;}.previewer{overflow:auto;display:block;border:1px solid;}#colorPicker{position:absolute;display:none;z-index:10;margin:0px;padding:0px;}#colorPicker table{margin:0px;padding:0px;border:2px solid #000;border-spacing:0px;border-collapse:collapse;}#colorPicker td{margin:0px;padding:0px;border:1px solid;font-size:11px;text-align:center;cursor:auto;}#colorPicker .header{background-color:#fff;}#colorPicker .button{background-color:#fff;cursor:pointer;cursor:hand;}#colorPicker .button:hover{padding-top:3px;padding-bottom:3px;color:#fff;background-color:#136;}#colorPicker .cell{padding:4px;font-size:7px;cursor:crosshair;}#colorPicker .cell:hover{padding:10px;}.wikibarPopup{position:absolute;z-index:10;border:1px solid #014;color:#014;background-color:#cef;}.wikibarPopup table{margin:0;padding:0;border:0;border-spacing:0;border-collapse:collapse;}.wikibarPopup .button:hover{color:#eee;background-color:#014;}.wikibarPopup .disabled{color:#888;}.wikibarPopup .disabled:hover{color:#888;background-color:#cef;}.wikibarPopup tr .seperator hr{margin:0;padding:0;background-color:#cef;width:100%;border:0;border-top:1px dashed #014;}.wikibarPopup tr .icon{font-family:verdana;font-weight:bolder;}.wikibarPopup tr .marker{font-family:verdana;font-weight:bolder;}.wikibarPopup td{font-size:0.9em;padding:2px;}.wikibarPopup input{border:0;border-bottom:1px solid #014;margin:0;padding:0;font-family:arial;font-size:100%;background-color:#fff;}',\n 'WikiBarStyleSheet');\n}\nfunction wikibar_createMenu(place,toolset,title,editor){\n if(!wikibar_isValidMenuItem(toolset)){return;}\n if(!(toolset.TYPE=='MAIN_MENU' || toolset.TYPE=='MENU')){ return; }\n for(var key in toolset){\n if(key.substring(0,9)=='SEPERATOR'){\n wikibar_createMenuSeperator(place);\n continue;\n }\n if(key.substring(0,8)=='DYNAITEM'){\n var dynaTools = toolset[key](title,editor);\n if(dynaTools.TYPE && dynaTools.TYPE=='MENU'){\n wikibar_createMenuItem(place,dynaTools,null,editor,title);\n }else{\n dynaTools.TYPE = 'MENU';\n wikibar_createMenu(place, dynaTools, title, editor);\n }\n continue;\n }\n if((toolset[key].TYPE!='MENU' && toolset[key].TYPE!='MAIN_MENU') && !toolset[key].HANDLER){continue;}\n wikibar_createMenuItem(place,toolset,key,editor,title);\n }\n}\nfunction wikibar_createMenuItem(place,toolset,key,editor,title){\n if(!key){\n var tool = toolset;\n }else{\n tool = toolset[key];\n tool.key = key;\n }\n if(!wikibar_isValidMenuItem(tool)){return;}\n var toolIsOnMainMenu = (toolset.TYPE=='MAIN_MENU');\n var toolIsMenu = (tool.TYPE=='MENU');\n var theButton;\n if(toolIsOnMainMenu){\n theButton = createTiddlyButton(\n place,\n '',\n (tool.TOOLTIP? tool.TOOLTIP : ''),\n (toolIsMenu? wikibar_onClickMenuItem : wikibar_onClickItem),\n 'button');\n theButton.innerHTML = (tool.CAPTION? tool.CAPTION : key);\n theButton.isOnMainMenu = true;\n addClass(theButton, (toolIsMenu? 'menu' : 'item'));\n place.appendChild( document.createTextNode('\sn') );\n if(!toolIsMenu){\n if(config.options['chkWikibarPopmenuOnMouseOver']){\n theButton.onmouseover = function(e){ wikibarPopup.remove(); };\n }\n }\n }else{\n theButton=createTiddlyElement(place, 'tr',key,'button');\n theButton.title = (tool.TOOLTIP? tool.TOOLTIP : '');\n theButton.onclick = (toolIsMenu? wikibar_onClickMenuItem : wikibar_onClickItem);\n var tdL = createTiddlyElement(theButton, 'td','','marker');\n var td = createTiddlyElement(theButton, 'td');\n var tdR = createTiddlyElement(theButton, 'td','','marker');\n td.innerHTML = (tool.CAPTION? tool.CAPTION : key);\n if(toolIsMenu){\n tdR.innerHTML=' ›';\n }\n if(tool.SELECTED){\n tdL.innerHTML = '√ ';\n addClass(theButton, 'selected');\n }\n if(tool.DISABLED){\n addClass(theButton, 'disabled');\n }\n }\n theButton.tiddlerTitle = title;\n theButton.toolItem = tool;\n theButton.editor = editor;\n theButton.tabIndex = 999;\n if(toolIsMenu){\n if(config.options['chkWikibarPopmenuOnMouseOver']){\n theButton.onmouseover = wikibar_onClickMenuItem;\n }\n }\n}\nfunction wikibar_createMenuSeperator(place){\n if(place.id.substring(0,7)=='wikibar') { return; }\n var onclickSeperator=function(e){\n if(!e){ e = window.event; }\n e.cancelBubble = true;\n if (e.stopPropagation){ e.stopPropagation(); }\n return(false);\n };\n var theButton=createTiddlyElement(place,'tr','','seperator');\n var td = createTiddlyElement(theButton, 'td','','seperator');\n td.colSpan=3;\n theButton.onclick=onclickSeperator;\n td.innerHTML = '<hr>';\n}\nfunction wikibar_genWikibarAbout(){\n var toolset={};\n toolset.version = {\n CAPTION: '<center>WikiBar ' +\n config.macros.wikibar.major + '.' +\n config.macros.wikibar.minor + '.' +\n config.macros.wikibar.revision +\n (config.macros.wikibar.beta? ' beta '+config.macros.wikibar.beta : '') +\n '</center>',\n HANDLER: function(){}\n };\n toolset.SEPERATOR = {};\n toolset.author = {\n CAPTION: '<center>Arphen Lin<br>arphenlin@gmail.com</center>',\n TOOLTIP: 'send mail to the author',\n HANDLER: function(){ window.open('mailto:arphenlin@gmail.com'); }\n };\n toolset.website = {\n CAPTION: '<center>aiddlywiki.sourceforge.net</center>',\n TOOLTIP: 'go to the web site of WikiBar',\n HANDLER: function(){ window.open('http:\s/\s/aiddlywiki.sourceforge.net/'); }\n };\n return toolset;\n}\nfunction wikibar_genWikibarOptions(title, editor){\n var toolset={};\n toolset.popOnMouseOver = {\n CAPTION:'popup menu on mouse over',\n SELECTED: config.options['chkWikibarPopmenuOnMouseOver'],\n HANDLER: function(param){\n config.options['chkWikibarPopmenuOnMouseOver'] = !config.options['chkWikibarPopmenuOnMouseOver'];\n saveOptionCookie('chkWikibarPopmenuOnMouseOver');\n var title = param.button.tiddlerTitle;\n var wikibar = document.getElementById('wikibar'+title);\n if(wikibar){ wikibar.parentNode.removeChild(wikibar); }\n wikibar_createWikibar(title);\n }\n };\n toolset.setEditorSize = {\n CAPTION:'set editor height: <input id=\s"txtWikibarEditorRows\s" type=text size=1 MAXLENGTH=3 value=\s"' +\n (config.options['txtWikibarEditorRows']? config.options['txtWikibarEditorRows']:editor.rows) + '\s"> ok',\n HANDLER: function(param){\n var input = document.getElementById('txtWikibarEditorRows');\n if(input){\n var rows = parseInt(input.value, 10);\n if(!isNaN(rows)){\n var editor = param.button.editor;\n editor.rows = rows;\n }else{\n rows=config.maxEditRows;\n }\n config.options['txtWikibarEditorRows'] = rows;\n saveOptionCookie('txtWikibarEditorRows');\n config.maxEditRows = rows;\n }\n }\n };\n toolset.setEditorSizeOnLoadingWikibar = {\n CAPTION:'set editor height on loading wikibar',\n SELECTED: config.options['chkWikibarSetEditorHeight'],\n HANDLER: function(param){\n config.options['chkWikibarSetEditorHeight'] = !config.options['chkWikibarSetEditorHeight'];\n saveOptionCookie('chkWikibarSetEditorHeight');\n if(config.options['chkWikibarSetEditorHeight']){\n var rows = config.options['txtWikibarEditorRows'];\n if(!isNaN(rows)){ rows = 15; }\n var editor = param.button.editor;\n editor.rows = rows;\n config.options['txtWikibarEditorRows'] = rows;\n saveOptionCookie('txtWikibarEditorRows');\n }\n }\n };\n toolset.SEPERATOR = {};\n toolset.update = {\n CAPTION: 'check for updates',\n DISABLED: true,\n HANDLER: function(){}\n };\n return toolset;\n}\nfunction wikibar_genPaletteSelector(){\n try{\n var cpTiddlers = store.getTaggedTiddlers('ColorPalettes');\n if(!cpTiddlers) { return; }\n var palettes=[];\n palettes.push(wikibarColorTool.defaultPaletteName);\n for(var i=0; i<cpTiddlers.length; i++){\n palettes.push(cpTiddlers[i].title.trim());\n }\n var toolset={};\n for(i=0; i<palettes.length; i++){\n toolset[palettes[i]] = {\n TOOLTIP: palettes[i],\n SELECTED: (palettes[i]==wikibarColorTool.paletteName),\n HANDLER: wikibar_doSelectPalette\n };\n }\n return toolset;\n }catch(ex){ return null; }\n}\nfunction wikibar_onClickItem(e){\n if(!e){ e = window.event; }\n var theTarget = resolveTarget(e);\n if(theTarget.tagName=='INPUT'){\n e.cancelBubble = true;\n if (e.stopPropagation){ e.stopPropagation(); }\n return;\n }\n var theButton = wikibar_resolveTargetButton(theTarget);\n if(!theButton){ return(false); }\n var o = theButton.toolItem;\n if(!o) { return; }\n var param = {\n event: e,\n button: theButton\n };\n if(o.HANDLER){ o.HANDLER(param); }\n if(o.DISABLED){\n e.cancelBubble = true;\n if (e.stopPropagation){ e.stopPropagation(); }\n }\n return(false);\n}\nfunction wikibar_onClickMenuItem(e){\n if(!e){ e = window.event; }\n var theButton = wikibar_resolveTargetButton(resolveTarget(e));\n if(!theButton){ return(false); }\n e.cancelBubble = true;\n if (e.stopPropagation){ e.stopPropagation(); }\n var title = theButton.tiddlerTitle;\n var editor = theButton.editor;\n var tool = theButton.toolItem;\n if(!tool) { return; }\n var popup = wikibarPopup.create(this);\n if(popup){\n wikibar_createMenu(popup,tool,title,editor);\n if(!popup.hasChildNodes()){\n wikibarPopup.remove();\n }else{\n wikibarPopup.show(popup, false);\n }\n }\n return(false);\n}\nvar wikibarColorTool = {\n defaultPaletteName : 'default',\n defaultColumns : 16,\n defaultPalette : [\n '#FFF','#DDD','#CCC','#BBB','#AAA','#999','#666','#333','#111','#000','#FC0','#F90','#F60','#F30','#C30','#C03',\n '#9C0','#9D0','#9E0','#E90','#D90','#C90','#FC3','#FC6','#F96','#F63','#600','#900','#C00','#F00','#F36','#F03',\n '#CF0','#CF3','#330','#660','#990','#CC0','#FF0','#C93','#C63','#300','#933','#C33','#F33','#C36','#F69','#F06',\n '#9F0','#CF6','#9C3','#663','#993','#CC3','#FF3','#960','#930','#633','#C66','#F66','#903','#C39','#F6C','#F09',\n '#6F0','#9F6','#6C3','#690','#996','#CC6','#FF6','#963','#630','#966','#F99','#F39','#C06','#906','#F3C','#F0C',\n '#3F0','#6F3','#390','#6C0','#9F3','#CC9','#FF9','#C96','#C60','#C99','#F9C','#C69','#936','#603','#C09','#303',\n '#0C0','#3C0','#360','#693','#9C6','#CF9','#FFC','#FC9','#F93','#FCC','#C9C','#969','#939','#909','#636','#606',\n '#060','#3C3','#6C6','#0F0','#3F3','#6F6','#9F9','#CFC','#9CF','#FCF','#F9F','#F6F','#F3F','#F0F','#C6C','#C3C',\n '#030','#363','#090','#393','#696','#9C9','#CFF','#39F','#69C','#CCF','#C9F','#96C','#639','#306','#90C','#C0C',\n '#0F3','#0C3','#063','#396','#6C9','#9FC','#9CC','#06C','#369','#99F','#99C','#93F','#60C','#609','#C3F','#C0F',\n '#0F6','#3F6','#093','#0C6','#3F9','#9FF','#699','#036','#039','#66F','#66C','#669','#309','#93C','#C6F','#90F',\n '#0F9','#6F9','#3C6','#096','#6FF','#6CC','#366','#069','#36C','#33F','#33C','#339','#336','#63C','#96F','#60F',\n '#0FC','#6FC','#3C9','#3FF','#3CC','#399','#033','#39C','#69F','#00F','#00C','#009','#006','#003','#63F','#30F',\n '#0C9','#3FC','#0FF','#0CC','#099','#066','#3CF','#6CF','#09C','#36F','#0CF','#09F','#06F','#03F','#03C','#30C'\n ],\n colorPicker : null,\n pickColorHandler: null,\n userData: null\n};\nwikibarColorTool.paletteName = wikibarColorTool.defaultPaletteName;\nwikibarColorTool.columns = wikibarColorTool.defaultColumns;\nwikibarColorTool.palette = wikibarColorTool.defaultPalette;\nwikibarColorTool.onPickColor = function(e){\n if (!e){ e = window.event; }\n var theCell = resolveTarget(e);\n if(!theCell){ return(false); }\n color = theCell.bgColor.toLowerCase();\n if(!color) { return; }\n wikibarColorTool.displayColorPicker(false);\n if(wikibarColorTool.pickColorHandler){\n wikibarColorTool.pickColorHandler(color, wikibarColorTool.userData);\n }\n return(false);\n};\nwikibarColorTool.onMouseOver = function(e){\n if (!e){ e = window.event; }\n var theButton = resolveTarget(e);\n if(!theButton){ return(false); }\n if(!wikibarColorTool) { return; }\n color = theButton.bgColor.toUpperCase();\n if(!color) { return; }\n td=document.getElementById('colorPickerInfo');\n if(!td) { return; }\n td.bgColor = color;\n td.innerHTML = '<span style=\s"color:#000;\s">'+color+'</span> ' +\n '<span style=\s"color:#fff;\s">'+color+'</span>';\n e.cancelBubble = true;\n if (e.stopPropagation){ e.stopPropagation(); }\n return(false);\n};\nwikibarColorTool.openColorPicker = function(theTarget, pickColorHandler, userData){\n wikibarColorTool.skipClickDocumentEvent = true;\n wikibarColorTool.pickColorHandler = pickColorHandler;\n wikibarColorTool.userData = userData;\n wikibarColorTool.moveColorPicker(theTarget);\n};\nwikibarColorTool.convert3to6HexColor = function(c){\n c=c.trim();\n var rx=/^\s#(\sd|[a-f])(\sd|[a-f])(\sd|[a-f])$/gi;\n return (rx.test(c)? c.replace(rx, '#$1$1$2$2$3$3') : c);\n};\nwikibarColorTool.numToHexColor = function (n){\n if(typeof(n)=='number' && (n>=0 && n<=255)) {\n s = n.toString(16).toLowerCase();\n return ((s.length==1)? '0'+s : s);\n }else{\n return null;\n }\n};\nwikibarColorTool.renderColorPalette = function(){\n if(wikibarColorTool.paletteName==wikibarColorTool.defaultPaletteName){\n wikibarColorTool.palette=wikibarColorTool.defaultPalette;\n wikibarColorTool.columns=wikibarColorTool.defaultColumns;\n return;\n }\n tiddlerText = (store.getTiddlerText(wikibarColorTool.paletteName, '')).trim();\n if(tiddlerText.length<=0) { return; }\n var cpContents = tiddlerText.split('\sn');\n var colors=[];\n columns = wikibarColorTool.defaultColumns;\n var tmpArray=null;\n errCount=0;\n for(var i=0; i<cpContents.length; i++){\n cpLine=cpContents[i].trim();\n if( (!cpLine) || (cpLine.length<=0) || (cpLine.charAt(0) == '#') ){ continue; }\n if(cpLine.substring(0,8).toLowerCase()=='columns:'){\n tmpArray = cpLine.split(':');\n try{\n columns = parseInt(tmpArray[1],10);\n }catch(ex){\n columns = wikibarColorTool.defaultColumns;\n }\n }else{\n tmpArray = cpLine.replace('\st', ' ').split(/[ ]{1,}/);\n try{\n color='';\n for(var j=0; j<3; j++){\n c=parseInt(tmpArray[j].trim(), 10);\n if(isNaN(c)){\n break;\n }else{\n c=wikibarColorTool.numToHexColor(c);\n if(!c) {break;}\n color+=c;\n }\n }\n if(color.length==6){\n colors.push('#'+color);\n } else {\n throw 'error';\n }\n }catch(ex){\n }\n }\n }\n if(colors.length>0){\n wikibarColorTool.palette = colors;\n wikibarColorTool.columns = columns;\n }else{\n throw 'renderColorPalette(): No color defined in the palette.';\n }\n};\nwikibarColorTool.displayColorPicker = function(visible){\n if(wikibarColorTool.colorPicker){\n wikibarColorTool.colorPicker.style.display = (visible? 'block' : 'none');\n }\n};\nwikibarColorTool.moveColorPicker = function(theTarget){\n if(!wikibarColorTool.colorPicker){\n wikibarColorTool.createColorPicker();\n }\n var cp = wikibarColorTool.colorPicker;\n var rootLeft = findPosX(theTarget);\n var rootTop = findPosY(theTarget);\n var popupLeft = rootLeft;\n var popupTop = rootTop;\n var popupWidth = cp.offsetWidth;\n var winWidth = findWindowWidth();\n if(popupLeft + popupWidth > winWidth){\n popupLeft = winWidth - popupWidth;\n }\n cp.style.left = popupLeft + 'px';\n cp.style.top = popupTop + 'px';\n wikibarColorTool.displayColorPicker(true);\n};\nwikibarColorTool.createColorPicker = function(unused, palette){\n if(palette){ wikibarColorTool.paletteName=palette; }\n wikibarColorTool.renderColorPalette();\n wikibarColorTool.colorPicker = document.createElement('div');\n wikibarColorTool.colorPicker.id = 'colorPicker';\n document.body.appendChild(wikibarColorTool.colorPicker);\n var theTable = document.createElement('table');\n wikibarColorTool.colorPicker.appendChild(theTable);\n var theTR = document.createElement('tr');\n theTable.appendChild(theTR);\n var theTD = document.createElement('td');\n theTD.className = 'header';\n theTD.colSpan = wikibarColorTool.columns;\n theTD.innerHTML = wikibarColorTool.paletteName;\n theTR.appendChild(theTD);\n for(var i=0; i<wikibarColorTool.palette.length; i++){\n if((i%wikibarColorTool.columns)===0){\n theTR = document.createElement('tr');\n theTable.appendChild(theTR);\n }\n theTD = document.createElement('td');\n theTD.className = 'cell';\n theTD.bgColor = wikibarColorTool.convert3to6HexColor(wikibarColorTool.palette[i]);\n theTD.onclick = wikibarColorTool.onPickColor;\n theTD.onmouseover = wikibarColorTool.onMouseOver;\n theTR.appendChild(theTD);\n }\n rest = wikibarColorTool.palette.length % wikibarColorTool.columns;\n if(rest>0){\n theTD = document.createElement('td');\n theTD.colSpan = wikibarColorTool.columns-rest;\n theTD.bgColor = '#000000';\n theTR.appendChild(theTD);\n }\n theTR = document.createElement('tr');\n theTable.appendChild(theTR);\n theTD = document.createElement('td');\n theTD.colSpan = wikibarColorTool.columns;\n theTD.id = 'colorPickerInfo';\n theTR.appendChild(theTD);\n};\nwikibarColorTool.onDocumentClick = function(e){\n if (!e){ e = window.event; }\n if(wikibarColorTool.skipClickDocumentEvent) {\n wikibarColorTool.skipClickDocumentEvent = false;\n return true;\n }\n if((!e.eventPhase) || e.eventPhase == Event.BUBBLING_PHASE || e.eventPhase == Event.AT_TARGET){\n wikibarColorTool.displayColorPicker(false);\n }\n return true;\n};\nfunction wikibar_doSelectPalette(param){\n clearMessage();\n var theButton = param.button;\n if(!theButton.toolItem.key) { return; }\n var palette = theButton.toolItem.key;\n var oldPaletteName = wikibarColorTool.paletteName;\n if(oldPaletteName != palette){\n try{\n wikibarColorTool.createColorPicker(theButton, palette);\n displayMessage('Palette \s"'+palette+'\s" ('+ wikibarColorTool.palette.length +' colors) is selected');\n }catch(ex){\n errMsg = ex;\n if(errMsg.substring(0,18)=='renderColorPalette'){\n displayMessage('Invalid palette \s"' + palette + '\s", please check it out!');\n wikibarColorTool.createColorPicker(theButton, oldPaletteName);\n }\n }\n }\n}\nvar wikibarPopup = {\n skipClickDocumentEvent: false,\n stack: []\n};\nwikibarPopup.resolveRootPopup = function(o){\n if(o.isOnMainMenu){ return null; }\n if(o.className.substring(0,12)=='wikibarPopup'){ return o;}\n return wikibarPopup.resolveRootPopup(o.parentNode);\n};\nwikibarPopup.create = function(root){\n for(var i=0; i<wikibarPopup.stack.length; i++){\n var p=wikibarPopup.stack[i];\n if(p.root==root){\n wikibarPopup.removeFrom(i+1);\n return null;\n }\n }\n var rootPopup = wikibarPopup.resolveRootPopup(root);\n if(!rootPopup){\n wikibarPopup.remove();\n }else{\n wikibarPopup.removeFromRootPopup(rootPopup);\n }\n var popup = createTiddlyElement(document.body,'div','wikibarPopup'+root.toolItem.key,'wikibarPopup');\n var pop = createTiddlyElement(popup,'table','','');\n wikibarPopup.stack.push({rootPopup: rootPopup, root: root, popup: popup});\n return pop;\n};\nwikibarPopup.show = function(unused,slowly){\n var curr = wikibarPopup.stack[wikibarPopup.stack.length-1];\n var overlayWidth = 1;\n var rootLeft, rootTop, rootWidth, rootHeight, popupLeft, popupTop, popupWidth;\n if(curr.rootPopup){\n rootLeft = findPosX(curr.rootPopup);\n rootTop = findPosY(curr.root);\n rootWidth = curr.rootPopup.offsetWidth;\n popupLeft = rootLeft + rootWidth - overlayWidth;\n popupTop = rootTop;\n }else{\n rootLeft = findPosX(curr.root);\n rootTop = findPosY(curr.root);\n rootHeight = curr.root.offsetHeight;\n popupLeft = rootLeft;\n popupTop = rootTop + rootHeight;\n }\n var winWidth = findWindowWidth();\n popupWidth = curr.popup.offsetWidth;\n if(popupLeft + popupWidth > winWidth){\n popupLeft = rootLeft - popupWidth + overlayWidth;\n }\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};\nwikibarPopup.remove = function(){\n if(wikibarPopup.stack.length > 0){\n wikibarPopup.removeFrom(0);\n }\n};\nwikibarPopup.removeFrom = function(from){\n for(var t=wikibarPopup.stack.length-1; t>=from; t--){\n var p = wikibarPopup.stack[t];\n removeClass(p.root,'highlight');\n p.popup.parentNode.removeChild(p.popup);\n }\n wikibarPopup.stack = wikibarPopup.stack.slice(0,from);\n};\nwikibarPopup.removeFromRootPopup = function(from){\n for(var t=0; t<wikibarPopup.stack.length; t++){\n var p = wikibarPopup.stack[t];\n if(p.rootPopup==from){\n wikibarPopup.removeFrom(t);\n break;\n }\n }\n};\nwikibarPopup.onDocumentClick = function(e){\n if (!e){ e = window.event; }\n if(wikibarPopup.skipClickDocumentEvent){\n wikibarPopup.skipClickDocumentEvent=false;\n return true;\n }\n if((!e.eventPhase) || e.eventPhase == Event.BUBBLING_PHASE || e.eventPhase == Event.AT_TARGET){\n wikibarPopup.remove();\n }\n return true;\n};\nvar wikibarStore = {\n TYPE: 'MAIN_MENU',\n help:{\n TYPE:'MENU',\n CAPTION: '<font face=\s"verdana\s">?</font>',\n TOOLTIP: 'about WikiBar',\n options:{\n TYPE:'MENU',\n DYNAITEM: wikibar_genWikibarOptions\n },\n about:{\n TYPE:'MENU',\n DYNAITEM: wikibar_genWikibarAbout\n }\n },\n preview:{\n TOOLTIP: 'preview this tiddler',\n CAPTION: '<font face=\s"verdana\s">∞</font>',\n HANDLER: wikibar_doPreview\n },\n line:{\n TOOLTIP: 'horizontal line',\n CAPTION: '<font face=\s"verdana\s">—</font>',\n syntax: '\sn----\sn',\n HANDLER: wikibar_editFormatByCursor\n },\n crlf:{\n TOOLTIP: 'new line',\n CAPTION: '<font face=\s"verdana\s">¶</font>',\n syntax: '\sn',\n HANDLER: wikibar_editFormatByCursor\n },\n selectAll:{\n TOOLTIP: 'select all',\n CAPTION: '<font face=\s"verdana\s">§</font>',\n HANDLER: wikibar_editSelectAll\n },\n deleteSelected:{\n TOOLTIP: 'delete selected',\n CAPTION: '<font face=\s"verdana\s">×</font>',\n syntax: '',\n HANDLER: wikibar_editFormat\n },\n textFormat:{\n TYPE: 'MENU',\n CAPTION: 'text',\n TOOLTIP: 'text formatters',\n ignore:{\n TOOLTIP: 'ignore wiki word',\n CAPTION: 'ignore wikiWord',\n syntax: '~user_text',\n hint: 'wiki_word',\n HANDLER: wikibar_editFormatByWord\n },\n bolder:{\n TOOLTIP: 'bolder text',\n CAPTION: '<strong>bolder</strong>',\n syntax: "''user_text''",\n hint: 'bold_text',\n HANDLER: wikibar_editFormatByWord\n },\n italic:{\n TOOLTIP: 'italic text',\n CAPTION: '<em>italic</em>',\n syntax: '\s/\s/user_text\s/\s/',\n hint: 'italic_text',\n HANDLER: wikibar_editFormatByWord\n },\n underline:{\n TOOLTIP: 'underline text',\n CAPTION: '<u>underline</u>',\n syntax: '__user_text__',\n hint: 'underline_text',\n HANDLER: wikibar_editFormatByWord\n },\n strikethrough:{\n TOOLTIP: 'strikethrough text',\n CAPTION: '<strike>strikethrough</strike>',\n syntax: '==user_text==',\n hint: 'strikethrough_text',\n HANDLER: wikibar_editFormatByWord\n },\n superscript:{\n TOOLTIP: 'superscript text',\n CAPTION: 'X<sup>superscript</sup>',\n syntax: '^^user_text^^',\n hint: 'superscript_text',\n HANDLER: wikibar_editFormatByWord\n },\n subscript:{\n TOOLTIP: 'subscript text',\n CAPTION: 'X<sub>subscript</sub>',\n syntax: '~~user_text~~',\n hint: 'subscript_text',\n HANDLER: wikibar_editFormatByWord\n },\n comment:{\n TOOLTIP: 'comment text',\n CAPTION: 'comment text',\n syntax: '/%user_text%/',\n hint: 'comment_text',\n HANDLER: wikibar_editFormatByWord\n },\n monospaced:{\n TOOLTIP: 'monospaced text',\n CAPTION: '<code>monospaced</code>',\n syntax: '{{{user_text}}}',\n hint: 'monospaced_text',\n HANDLER: wikibar_editFormatByWord\n }\n },\n paragraph:{\n TYPE: 'MENU',\n TOOLTIP: 'paragarph formatters',\n list:{\n TYPE: 'MENU',\n TOOLTIP: 'list tools',\n bullet:{\n TOOLTIP: 'bullet point',\n syntax: '*user_text',\n hint: 'bullet_text',\n HANDLER: wikibar_editFormatByLine\n },\n numbered:{\n TOOLTIP: 'numbered list',\n syntax: '#user_text',\n hint: 'numbered_text',\n HANDLER: wikibar_editFormatByLine\n }\n },\n heading:{\n TYPE: 'MENU',\n heading1:{\n CAPTION:'<h1>Heading 1</h1>',\n TOOLTIP: 'Heading 1',\n syntax: '!user_text',\n hint: 'heading_1',\n HANDLER: wikibar_editFormatByLine\n },\n heading2:{\n CAPTION:'<h2>Heading 2<h2>',\n TOOLTIP: 'Heading 2',\n syntax: '!!user_text',\n hint: 'heading_2',\n HANDLER: wikibar_editFormatByLine\n },\n heading3:{\n CAPTION:'<h3>Heading 3</h3>',\n TOOLTIP: 'Heading 3',\n syntax: '!!!user_text',\n hint: 'heading_3',\n HANDLER: wikibar_editFormatByLine\n },\n heading4:{\n CAPTION:'<h4>Heading 4</h4>',\n TOOLTIP: 'Heading 4',\n syntax: '!!!!user_text',\n hint: 'heading_4',\n HANDLER: wikibar_editFormatByLine\n },\n heading5:{\n CAPTION:'<h5>Heading 5</h5>',\n TOOLTIP: 'Heading 5',\n syntax: '!!!!!user_text',\n hint: 'heading_5',\n HANDLER: wikibar_editFormatByLine\n }\n },\n comment:{\n TYPE: 'MENU',\n commentByLine:{\n CAPTION:'comment by line',\n TOOLTIP: 'line comment',\n syntax: '/%user_text%/',\n hint: 'comment_text',\n HANDLER: wikibar_editFormatByLine\n },\n commentByBlock:{\n CAPTION:'comment by block',\n TOOLTIP: 'block comment',\n syntax: '/%\snuser_text\sn%/',\n hint: 'comment_text',\n byBlock: true,\n HANDLER: wikibar_editFormatByLine\n }\n },\n monospaced:{\n TYPE: 'MENU',\n monosByLine:{\n CAPTION: 'monospaced by line',\n TOOLTIP: 'line monospaced',\n syntax: '{{{\snuser_text\sn}}}',\n hint: 'monospaced_text',\n HANDLER: wikibar_editFormatByLine\n },\n monosByBlock:{\n CAPTION: 'monospaced by block',\n TOOLTIP: 'block monospaced',\n syntax: '{{{\snuser_text\sn}}}',\n hint: 'monospaced_text',\n byBlock: true,\n HANDLER: wikibar_editFormatByLine\n }\n },\n quote:{\n TYPE: 'MENU',\n quoteByLine:{\n CAPTION: 'quote by line',\n TOOLTIP: 'line quote',\n syntax: '>user_text',\n hint: 'quote_text',\n HANDLER: wikibar_editFormatByLine\n },\n quoteByBlcok:{\n CAPTION: 'quote by block',\n TOOLTIP: 'block quote',\n syntax: '<<<\snuser_text\sn<<<',\n hint: 'quote_text',\n byBlock: true,\n HANDLER: wikibar_editFormatByLine\n }\n },\n plugin:{\n TYPE: 'MENU',\n code:{\n CAPTION: 'code area',\n TOOLTIP: 'block monospaced for plugin',\n syntax: '\sn\s/\s/{{{\snuser_text\sn\s/\s/}}}\sn',\n hint: 'monospaced_plugin_code',\n byBlock: true,\n HANDLER: wikibar_editFormatByLine\n },\n commentByLine:{\n CAPTION: 'comment by line',\n TOOLTIP: 'line comment',\n syntax: '\s/\s/user_text',\n hint: 'plugin_comment',\n HANDLER: wikibar_editFormatByLine\n },\n commentByBlock:{\n CAPTION: 'comment by block',\n TOOLTIP: 'block comment',\n syntax: '\s/\s***\snuser_text\sn***\s/',\n hint: 'plugin_comment',\n byBlock: true,\n HANDLER: wikibar_editFormatByLine\n }\n },\n css:{\n TYPE: 'MENU',\n code:{\n CAPTION: 'code area',\n TOOLTIP: 'block monospaced for css',\n syntax: '\sn\snuser_text\sn\sn',\n hint: 'monospaced_css_code',\n byBlock: true,\n HANDLER: wikibar_editFormatByLine\n },\n commentByLine:{\n CAPTION: 'comment by line',\n TOOLTIP: 'line comment',\n syntax: '',\n hint: 'css_comment',\n HANDLER: wikibar_editFormatByLine\n },\n commentByBlock:{\n CAPTION: 'comment by block',\n TOOLTIP: 'block comment',\n syntax: '',\n hint: 'css_comment',\n byBlock: true,\n HANDLER: wikibar_editFormatByLine\n }\n }\n },\n color:{\n TYPE: 'MENU',\n TOOLTIP: 'color tools',\n highlight:{\n CAPTION:'highlight text',\n TOOLTIP: 'highlight text',\n syntax: '@@user_text@@',\n hint: 'highlight_text',\n HANDLER: wikibar_editFormatByWord\n },\n color:{\n CAPTION:'text color',\n TOOLTIP: 'text color',\n hint: 'your_text',\n syntax: '@@color(%1):user_text@@',\n HANDLER: wikibar_getColorCode,\n doMore: wikibar_editFormatByWord\n },\n bgcolor:{\n CAPTION:'background color',\n TOOLTIP: 'background color',\n hint: 'your_text',\n syntax: '@@bgcolor(%1):user_text@@',\n HANDLER: wikibar_getColorCode,\n doMore: wikibar_editFormatByWord\n },\n colorcode:{\n CAPTION:'color code',\n TOOLTIP: 'insert color code',\n syntax: '%1',\n HANDLER: wikibar_getColorCode,\n doMore: wikibar_editFormatByCursor\n },\n 'color palette':{\n TYPE:'MENU',\n DYNAITEM: wikibar_genPaletteSelector,\n SEPERATOR:{},\n morePalette:{\n CAPTION:'more palettes',\n TOOLTIP:'get more palettes',\n HANDLER: wikibar_getMorePalette\n }\n }\n },\n link:{\n TYPE: 'MENU',\n TOOLTIP: 'insert link',\n wiki:{\n CAPTION:'wiki link',\n TOOLTIP: 'wiki link',\n syntax: '[[user_text]]',\n hint: 'wiki_word',\n HANDLER: wikibar_editFormatByWord\n },\n pretty:{\n CAPTION: 'pretty link',\n TOOLTIP: 'pretty link',\n syntax: '[[user_text|%1]]',\n hint: 'pretty_word',\n param: 'PrettyLink Target',\n HANDLER: wikibar_getLinkUrl,\n doMore: wikibar_editFormatByWord\n },\n url:{\n TOOLTIP: 'url link',\n syntax: '[[user_text|%1]]',\n hint: 'your_text',\n param: 'http:\s/\s/...',\n HANDLER: wikibar_getLinkUrl,\n doMore: wikibar_editFormatByWord\n },\n image:{\n TOOLTIP: 'image link',\n syntax: '[img[user_text|%1]]',\n hint: 'alt_text',\n param: 'image/icon.jpg',\n HANDLER: wikibar_getLinkUrl,\n doMore: wikibar_editFormatByWord\n }\n },\n macro:{},\n more:{\n TYPE: 'MENU',\n TOOLTIP: 'more tools',\n table:{\n TYPE: 'MENU',\n TOOLTIP: 'table',\n table:{\n CAPTION:'create table',\n TOOLTIP: 'create a new table',\n syntax: '\sn%1\sn',\n HANDLER: wikibar_getTableRowCol,\n doMore: wikibar_editFormatByWord\n },\n header:{\n TOOLTIP: 'table header text',\n syntax: '|user_text|c',\n hint: 'table_header',\n HANDLER: wikibar_editFormatByWord\n },\n cell:{\n TOOLTIP: 'create a tabel cell',\n syntax: '|user_text|',\n hint: 'your_text',\n HANDLER: wikibar_editFormatByWord\n },\n columnHeader:{\n CAPTION:'column header',\n TOOLTIP: 'create a column header cell',\n syntax: '|!user_text|',\n hint: 'column_header',\n HANDLER: wikibar_editFormatByWord\n },\n cell:{\n TYPE: 'MENU',\n CAPTION: 'cell options',\n bgcolor:{\n CAPTION: 'background color',\n TOOLTIP: 'cell bgcolor',\n syntax: '|bgcolor(%1):user_text|',\n hint: 'your_text',\n HANDLER: wikibar_getColorCode,\n doMore: wikibar_editFormatByTableCell\n },\n alignLeft:{\n CAPTION: 'align left',\n TOOLTIP: 'left align cell text',\n syntax: '|user_text|',\n hint: 'your_text',\n HANDLER: wikibar_editFormatByTableCell\n },\n alignCenter:{\n CAPTION: 'align center',\n TOOLTIP: 'center align cell text',\n syntax: '| user_text |',\n hint: 'your_text',\n HANDLER: wikibar_editFormatByTableCell\n },\n alignRight:{\n CAPTION: 'align right',\n TOOLTIP: 'right align cell text',\n syntax: '| user_text|',\n hint: 'your_text',\n HANDLER: wikibar_editFormatByTableCell\n }\n }\n },\n html:{\n TYPE: 'MENU',\n html:{\n CAPTION: '<html>',\n TOOLTIP: 'html tag',\n syntax: '<html>\snuser_text\sn</html>',\n hint: 'html_content',\n byBlock: true,\n HANDLER: wikibar_editFormatByLine\n }\n }\n },\n addon:{\n TYPE: 'MENU',\n TOOLTIP:'3rd party tools',\n 'about addons':{\n TOOLTIP: 'list loaded addons',\n HANDLER: wikibar_doListAddons\n },\n SEPERATOR:{}\n }\n};\naddEvent(document, 'click', wikibarColorTool.onDocumentClick);\naddEvent(document, 'click', wikibarPopup.onDocumentClick);\nwikibar_install();\n//}}}\n\n\n
/***\n!Metadata:\n|''Name:''|XMLReader|\n|''Description:''||\n|''Version:''|2.2.0|\n|''Date:''|May 19, 2007|\n|''Source:''|http://sourceforge.net/project/showfiles.php?group_id=150646|\n|''Author:''|BramChen (bram.chen (at) gmail (dot) com)|\n|''License:''|[[Creative Commons Attribution-ShareAlike 2.5 License]]|\n|''~CoreVersion:''|2.2.0|\n|''Browser:''|Firefox 1.5+; InternetExplorer 6.0|\n|''Required:''|As the param "asHtml" is used, [[NestedSlidersPlugin|http://www.tiddlytools.com/#NestedSlidersPlugin]] should be installed|\n!Syntax:\n{{{<<rssfeed withDesc|noDesc|asHtml rssfeed.xml|http://www.example.com/rssfeed.rdf>>}}}\n!Revision History:\n|''Version''|''Date''|''Note''|\n|2.2.0|May 19, 2007|Atom feeds suppported|\n|2.1.1|May 15, 2007|Fixed cache bug|\n|2.1.0|May 10, 2007|Fixed bugs:<br>1.missing parameter 'responseText' of processResponse<br>2.Caches failed|\n|2.0.0|Mar 08, 2007|Required TW 2.2.0+|\n|1.5.0|Mar 04, 2007|Codes reworked, more easier reused|\n|1.2.0|Jul 20, 2006|Runs compatibly with TW 2.1.0 (rev #403+)|\n|1.1.0|Jul 10, 2006)|change xmlhttp.send(null)/send() to xmlhttp.send("") for more compatibility for some browsers|\n|1.0.0|Mar 11, 2006|Initial release|\n|~|~|This macro is reworked from RssNewsMacro, but it can be easy to extended to support different structure of xml document from rss feeds|\n|~|~|You could uninstall the RssNewsMacro, but still use the original syntax,<<br>>{{{<<rssfeed withDesc|noDesc|asHtml "rssfeed.xml"|"http://www.example.com/rssfeed.rdf">>}}}|\n\n!Code section:\n***/\n//{{{\nversion.extensions.xmlreader = {major: 2, minor: 2, revision: 0,\n date: new Date("May 19, 2007"),\n name: "XMLReader",\n type: "Macro",\n author: "BramChen",\n source: "http://sourceforge.net/project/showfiles.php?group_id=150646"\n};\n\nconfig.messages.XmlReader = {\n fromCache: "^^(//from cache//)^^",\n errorInDataRetriveing: "Problem retrieving XML data: %0",\n invalidXML: "Invalid XML retrieved from: %0",\n urlNotAccessible: "Access to %0 is not allowed,\snPlease check the setting of your browser:\sn1.For Gecko based, you should set the 'signed.applets.codebase_principal_support' to be true, in about:config.\sn2.For IE, you should add this web site to your trust list."\n};\n\nfunction XmlReader(place,withDesc,xmlURL) {\n this.xmlhttp = null;\n this.place = place;\n this.xmlURL = xmlURL;\n this.withDesc = withDesc;\n this.itemStructure = {title:'Title',link:'Link',pubDate:'PubDate',description:'Desc'};\n this.atomStructure = {title:'Title',id:'Link',updated:'Updated',summary:'Desc'};\n// this.rsTemplate = function(){var t='';for (var i in itemStructure){t+='_'+itemStructure[i]}};\n this.rsTemplate = '_pubDate\sn**[[_title|_link]]_description';\n this.items = {Elm: "%0Elm", Text: "_%0"};\n this.keyItem = "item";\n this.dateFormat = "DDD, DD MMM YYYY";\n this.groupBy = null;\n return this;\n};\n\nXmlReader.prototype.asyncGet = function(xmlURL,callback){\n if(window.Components && window.netscape && window.netscape.security && this.isCrossSite(xmlURL)){\n try {netscape.security.PrivilegeManager.enablePrivilege("UniversalBrowserRead");}\n catch (e) {displayMessage(e.description?e.description:e.toString());}\n }\n return doHttp("GET",xmlURL,null,'text/xml',null,null,callback,null,null)\n};\n\nXmlReader.prototype.genLists = function(xml){\n var itemStructure;\n if (xml.lastChild.nodeName == 'feed'){\n this.keyItem = 'entry';\n itemStructure = this.atomStructure;\n }\n else {\n itemStructure = this.itemStructure;\n }\n var itemList = xml.getElementsByTagName(this.keyItem);\n var items = this.items;\n var rsLists='', rssItem; this.groupBy='';\n for (var i=0; i<itemList.length; i++){\n var itemElms=[],itemTexts=[];\n var rsTemplate=this.rsTemplate;\n for (var j in itemStructure){\n var itemElm = items.Elm.format([j]);\n var itemText = items.Text.format([j]);\n itemElms[itemElm] = itemList[i].getElementsByTagName(j).item(0);\n if(itemElms[itemElm]){\n var theTitle = itemStructure[j];\n var theText = (itemElms[itemElm].firstChild)?itemElms[itemElm].firstChild.nodeValue:'';\n rsTemplate=this.convertTemplate(rsTemplate,j,theText);\n }\n else {\n rsTemplate = rsTemplate.replace('_'+j, '');\n }\n }\n rsLists += rsTemplate;\n }\n return rsLists;\n};\n \nXmlReader.prototype.convertTemplate = function(rsTemplate,j,theText){\n switch (j){\n case 'title':\n rsTemplate = rsTemplate.replace(/_title/,theText.replace(/\s[|\s]/g,''));\n break;\n case 'id':\n j = 'link';\n case 'link' || 'id':\n rsTemplate = rsTemplate.replace('_'+j, theText);\n break;\n case 'updated':\n j = 'pubDate'\n case 'pubDate':\n theText = this.dateFormatString(this.dateFormat, theText);\n if (this.groupBy == theText){\n rsTemplate = rsTemplate.replace('_'+j, '');\n }\n else{\n rsTemplate = rsTemplate.replace('_'+j, '\sn* '+theText);\n this.groupBy = theText;\n }\n break;\n case 'summary':\n j = 'description';\n case 'description':\n var regexpDesc = new RegExp("withDesc|asHtml","g");\n if (regexpDesc.exec(this.withDesc) && theText){\n var _description = theText.replace(/\sn/g,' ');\n _description =_description.replace(/<br \s/>/ig,'\sn'); \n if (version.extensions.nestedSliders){\n _description = ((this.withDesc == "asHtml")?"<html>"+_description+"</html>":_description);\n rsTemplate = rsTemplate.replace('_'+j,'+++[...]'+_description+'\sn===\sn');\n }\n else {\n rsTemplate = rsTemplate.replace('_'+j,_description+'\sn');\n }\n }\n else {\n rsTemplate = rsTemplate.replace('_'+j,'');\n }\n break;\n }\n return (rsTemplate);\n};\n\nXmlReader.prototype.dateFormatString = function(template, theDate){\n theDate = theDate.replace(/-/g,'/').replace(/T.*UT|T.*Z/ ,'');\n var dateString = new Date(theDate);\n template = template.replace(/hh|mm|ss/g,'');\n return dateString.formatString(template);\n};\n\nXmlReader.prototype.isCrossSite = function (url){\n var result = false;\n var curLoc = document.location;\n if (url.indexOf(":") != -1 && curLoc.protocol.indexOf("http") != -1) {\n var re=/(\sw+):\s/\s/([^/:]+)(:\sd*)?([^# ]*)/;\n var rsURL=url.match(re);\n for (var i=0; i<rsURL.length; i++){\n rsURL[i]=(typeof rsURL[i] == 'undefined')?'':rsURL[i];\n }\n result = (curLoc.protocol == rsURL[1] && curLoc.host == rsURL[2] && curLoc.port == rsURL[3]);\n }\n return (!result);\n};\n//}}}\n/***\n!Macro rssfeed\n***/\n//{{{\nconfig.macros.rssfeed = {\n cache: {},\n dateFormat: "YYYY/0MM/0DD"\n};\n\nconfig.macros.rssfeed.handler = function(place,macroName,params){\n var withDesc = params[0];\n var xmlURL = params[1];\n var rss = new XmlReader(place,withDesc,xmlURL);\n rss.dateFormat = this.dateFormat;\n var processResponse = function(status,params,responseText,xmlURL,x){\n if (window.netscape){\n if (rss.isCrossSite(xmlURL)){\n try {netscape.security.PrivilegeManager.enablePrivilege("UniversalBrowserRead");}\n catch (e) { displayMessage(e.description?e.description:e.toString()); }\n }\n }\n if (x.responseXML){\n xmlURL = xmlURL.replace(/[\s?|\s&]nocache.*/,'');\n config.macros.rssfeed.cache[xmlURL] = x;\n wikify(rss.genLists(x.responseXML),place);\n }\n else {\n wikify("<html>"+ x.responseText+"</html>", place);\n displayMessage(config.messages.XmlReader.invalidXML.format([xmlURL]));\n }\n };\n if (this.cache[xmlURL]) {\n wikify(config.messages.XmlReader.fromCache,place);\n var status = false;\n var x=this.cache[xmlURL];\n processResponse(status,null,x.responseText,xmlURL,x);\n }\n else {\n rss.xmlhttp = rss.asyncGet(xmlURL, processResponse);\n }\n};\n//}}}
/***\n''Name:'' GenRssPlugin\n''Source:'' http://www.sourceforge.net/projects/ptw/\n''Author:'' BramChen\n''Type:'' Plugin\n''Description:''\n<<<\n*This plugin add a "xml-stylesheet" processing to the rss file generated by TW.\n*Required: \n** rssfeed.xsl\n** rssfeed.css\n** xsl.css\n*if 'config.options.txtGenRssTags' is empty then the outputs limited to 'config.numRssItems' except tiddlers taged with 'excludeLists'.\n*you can add the macro {{{<<option txtGenRssTags>>}}} to some configure tiddler, eg 'AdvancedOptions' for changing the tag list,\n*and add {{{<<option txtRssItems>>}}} to change number of rsfeed item.\n<<<\n''Revision History:''\n<<<\nv0.2.0 (Mar 30 2006)\n* add a new feature that rssfeed limited to tiddlers taged with the tag list specified in 'config.options.txtGenRssTags'.\n* add config.options.txtRssItems.\n* if it's empty then the outputs limited to 'config.numRssItems' except tiddlers taged with 'excludeLists'.\n* you can add the macro {{{<<option txtGenRssTags>>}}} to some configure tiddler, eg 'AdvancedOptions' for changing the tag list.\nv0.1.1 (Feb 04 2006)\n* JSLint checked\nv0.1.0 (Feb 1, 2006) \n* initial release\n<<<\n***/\n// //''Code section:''\n//{{{\nversion.extensions.genRss = {major: 0, minor: 2, revision: 0,\n date: new Date("Mar 30, 2006"),\n info: {\n type: "Macro",\n name: "GenRssPlugin",\n author: "BramChen",\n source: "http://sourceforge.net/project/showfiles.php?group_id=150646"\n }\n};\n\nwindow.generateRss_ori = window.generateRss;\n\nconfig.options.txtGenRssTags = "";\nconfig.options.txtRssItems = "20";\n\nwindow.generateRss = function () {\n var rssTags = config.options.txtGenRssTags.readBracketedList();\n var numRssItems = config.options.txtRssItems;\n var s = [];\n var d = new Date();\n var u = store.getTiddlerText("SiteUrl",null);\n // Assemble the header\n s.push("<" + "?xml version=\s"1.0\s" encoding=\s"utf-8\s"?" + ">");\n s.push("<" + "?xml-stylesheet type=\s"text/xsl\s" href=\s"rss/rssfeed.xsl\s"?" +">");\n s.push("<" + "?xml-stylesheet type=\s"text/css\s" href=\s"rss/rssfeed.css\s"?" +">");\n s.push("<" + "rss version=\s"2.0\s">");\n s.push("<channel>");\n s.push("<title>" + wikifyPlain("SiteTitle").htmlEncode() + "</title>");\n if(u)\n s.push("<link>" + u.htmlEncode() + "</link>");\n s.push("<description>" + wikifyPlain("SiteSubtitle").htmlEncode() + "</description>");\n s.push("<language>en-us</language>");\n s.push("<copyright>Copyright " + d.getFullYear() + " " + config.options.txtUserName.htmlEncode() + "</copyright>");\n s.push("<pubDate>" + d.toGMTString() + "</pubDate>");\n s.push("<lastBuildDate>" + d.toGMTString() + "</lastBuildDate>");\n s.push("<docs>http://blogs.law.harvard.edu/tech/rss</docs>");\n s.push("<generator>TiddlyWiki " + version.major + "." + version.minor + "." + version.revision + "</generator>");\n // The body\n var tiddlers = store.getTiddlers("modified","excludeLists");\n var n = numRssItems > tiddlers.length ? 0 : tiddlers.length-numRssItems;\n for (var t=tiddlers.length-1; t>=n; t--){\n var f=(rssTags.length===0);\n for (var i = 0; i<rssTags.length; i++){\n if (tiddlers[t].tags.find(rssTags[i])!=null){f=true;break;}\n }\n if (f){s.push(tiddlers[t].saveToRss(u));}\n }\n // And footer\n s.push("</channel>");\n s.push("</rss>");\n // Save it all\n return s.join("\sn");\n};\n//}}}
/***\n|''Name:''|LoadExtPlugin|\n|''Description:''|LoadExtPlugin allows you to load external extensions from the file lists (named .js) within those tiddlers taged with "ExtList".|\n|''Version:''|1.8.0|\n|''Date:''|Apr 30, 2007|\n|''Source:''|http://www.sourceforge.net/projects/ptw/|\n|''Author:''|BramChen (bram.chen (at) gmail (dot) com)|\n|''License:''|[[Creative Commons Attribution-ShareAlike 2.5 License]]|\n|''CoreVersion:''|2.1.0|\n|''Browser:''|Firefox 1.5+; InternetExplorer 6.0|\n\n+++!^[Revision History:]\nv1.8.0 (Apr 30 2007)\n*config.macros.loadExt support to load singgle external script by using {{{<<loadExt '/pathto/scriptfile.js'>>}}}\n*Ensure LoadExtPlugin loading itself and/or loadling scripts after core has been loaded with external core js and itself|\nv1.7.2 (Sep 28 2006)\n*Fixed bugs on IE\nv1.7.1 (30 Aug 2006)\n* Changed rule check of ExtList\nv1.7.0 (20 Jul 2006)\n* Runs compatibly with TW 2.1.0 (rev #403+)\nv1.6.0 (13 Jul 2006)\n* Fixed bugs in refreshCode and config.macros.loadExt.loadScripts on IE\n* Runs compatibly with TW 2.1.0 (rev #359+)\nv1.5.2 (21 Jun 2006)\n* minor changes for XHTML compliant\nv1.5.1 (26 Feb 2006)\n* JSLint checked\nv1.5.0 (02 Feb 2006)\n* add new function config.macros.loadExt.LoadScripts(), keep all variables to be local, thanks Udo.\n* Fixed several missing variable declarations\nv1.4.0 (20 Jan 2006)\n* refreshCode() improved.\nv1.3.0 (14 Jan 2006) \n* strip startup error massage for IE\nv1.2.0 (13 Jan 2006) \n* TiddlyWiki version 2.0.0 or above required.\n* refreshCode() improved.\nv1.1.0 (10 Jan 2006)\n* To make the extensions list handling more robust, thanks Udo.\n* Fix bugs for multi-tiddlers tagged with ExtList\nv1.0.0 (07 Jan 2006) \n* Combine the RefreshExt code and LoadExtPlugin, and also make TW 1.2 to be backward compatible, thanks Udo.\n* Globle function refreshCode() added, and reserve the refreshExt macro.\n* Fix a minor bug for variable "scriptfile".\nv0.3.0 (29 Dec 2005)\n* macro refreshExt modified to refresh formatter\nv0.2.0 (24 Nov 2005)\n* macro refreshExt modified for TW 1.2.39 beta 2 and above\nv0.1.0 (25 Sep 2005) \n* initial release\n===\n\n!''Code section:''\n***/\n//{{{\nversion.extensions.loadExt = {major: 1, minor: 8, revision: 0,\n date: new Date("Apr 30, 2007"),\n name: "LoadExtPlugin",\n type: "Plugin",\n author: "BramChen",\n source: "http://sourceforge.net/project/showfiles.php?group_id=150646"\n};\n\nconfig.macros.loadExt = {};\nconfig.macros.loadExt.handler = function(place,macroName,params){\n if (params[0])\n this.loadScriptFile(params[0]);\n else\n this.loadScripts();\n};\n\nconfig.macros.loadExt.loadScriptFile = function(scriptfile){\n var scriptfile = scriptfile.trim();\n if (scriptfile.length < 2 || scriptfile.substr(0,2) == "//" || scriptfile.indexOf(".js") == -1){\n return;\n }\n // displayMessage("loaded: "+ scriptfile);\n var n = document.createElement("script");\n n.type = "text/javascript";\n n.src = scriptfile;\n document.getElementsByTagName("head")[0].appendChild(n);\n};\n\nconfig.macros.loadExt.loadScripts = function() {\n var extTag = "ExtList";\n var str = ""; var scripts = [];\n var tiddlers = store.getTaggedTiddlers(extTag);\n for(var s=0 ; s<tiddlers.length; s++){\n str += store.getRecursiveTiddlerText(tiddlers[s].title)+"\sn";\n }\n scripts = str.replace(/[;\sr]/mg,"\sn").split("\sn");\n for (var i=0; i<scripts.length-1; i++) {\n this.loadScriptFile(scripts[i]);\n }\n\n if (config.browser.isIE){\n// setTimeout(function(){window.refreshCode();return false;},500);\n var lerInterval = setInterval(function(){if(formatter) {clearInterval(lerInterval); window.refreshCode();};},100);\n }\n else {\n var theCodes = "//<![CDATA[\snwindow.refreshCode();//]]>";\n n = document.createElement("script");\n n.type = "text/javascript";\n n.appendChild(document.createTextNode(theCodes));\n document.getElementsByTagName("head")[0].appendChild(n);\n this.refreshCodeInserted = true;\n }\n};\n\nwindow.refreshCode = function (){\n formatter = new Formatter(config.formatters);\n story.forEachTiddler(function(title,e){story.refreshTiddler(title,DEFAULT_VIEW_TEMPLATE,true);});\n refreshDisplay();\n return false;\n}\n\n// setTimeout(function(){config.macros.loadExt.loadScripts();return false;},500);\nvar loadextpluginInterval = setInterval(function(){if(formatter) {clearInterval(loadextpluginInterval); if(!config.macros.loadExt.refreshCodeInserted) config.macros.loadExt.loadScripts();}},100);\n//}}}
/***\n!Metadata:\n|''Name:''|ArchivedTimeline|\n|''Description:''|Timeline archived monthly.|\n|''Version:''|0.7.0|\n|''Date:''|Aug 25, 2007|\n|''Source:''|http://sourceforge.net/project/showfiles.php?group_id=150646|\n|''Author:''|BramChen (bram.chen (at) gmail (dot) com)|\n|''License:''|[[Creative Commons Attribution-ShareAlike 3.0 License|http://creativecommons.org/licenses/by-sa/3.0/]]|\n|''~CoreVersion:''|2.0.11|\n|''Browser:''|Firefox 1.5+; InternetExplorer 6.0|\n\n!Syntax:\n{{{<<timeline [modified|created [maxentries [dateFormate]]]>>}}}\n!Examples:\n{{{<<timeline>>}}}\n{{{<<timeline created 10>>}}}\n{{{<<timeline modified 10 "MMM DD, YYYY">>}}}\n\n!Revision History:\n|''Version''|''Date''|''Note''|\n|0.7.0|Jul 25, 2006|Accept a date format parameter|\n|0.6.3|Jan 14, 2007|Cleaned codes, Removed config.macros.timeline.slider and config.macros.timeline.onClickSlider|\n|0.6.2|Dec 10, 2006|Add monthFormat to display month format for Chinese|\n|0.6.1|Aug 12, 2006|A great effect on config.macros.timeline.slider for Firefox, thanks Bob McElrath|\n|0.6.0|Jul 25, 2006|Runs compatibly with TW 2.1.0 (rev #403+)|\n|0.5.2|Jun 21, 2006|Fixed bugs for dateFormat of TW 2.1|\n|~|~|Change default dateFormat to "0DD MMM, YYYY"|\n|0.5.1|Jun 04, 2006|Added config.macros.archivedTimeline.orderBy for localization|\n|0.5.0|Apr 19, 2006|Fixed bug for twice records of the same date ()|\n|~|~|Added Date.prototype.convertToLocalYYYYMMDDHHMM<<br>>in order to backward compatible with 2.0.6-|\n|0.4.0|Apr 03, 2006|Added new parameter, {{{<<timeline [sortfield] [maxentries]>>}}}|\n|~|~|Added config.options.txtTimelineMaxentries|\n|0.3.1|Feb 04, 2006|JSLint checked|\n|0.3.0|Feb 04, 2006|Fixed several missing variable declarations|\n|0.2.0|Dec 26, 2005|changed for the new feature of Macro timeline of TW 2.0.0 beta 6|\n|0.1.0|Nov 3, 2005|Initial release|\n\n!Code section:\n***/\n//{{{\nversion.extensions.archivedTimeline = {major: 0, minor: 7, revision: 0,\n date: new Date("Aug 26, 2007"),\n name: "ArchivedTimeline",\n type: "Macro",\n author: "BramChen",\n source: "http://sourceforge.net/project/showfiles.php?group_id=150646"\n};\nconfig.options.txtTimelineMaxentries=0;\nconfig.macros.archivedTimeline = {\n tooltips: "Archives sorted by ",\n orderBy:{modified: "modified", created: "created"},\n monthFormat: "0DD MMM YYYY",\n dateFormat: "0DD MMM YYYY"\n};\nconfig.macros.timeline = config.macros.archivedTimeline;\n\nconfig.macros.timeline.handler = function(place,macroName,params) {\n var field = params[0] ? params[0] : "modified";\n\n place.appendChild(document.createTextNode(this.tooltips + this.orderBy[field]));\n var tiddlers = store.reverseLookup("tags","excludeLists",false,field);\n var lastMonth = ""; var lastDay = ""; var theText = "----\sn"; var i = 0;\n var last = (params[1])?params[1]:config.options.txtTimelineMaxentries;\n last = (isNaN(last)||last<1) ? 0:tiddlers.length-Math.min(tiddlers.length,parseInt(last));\n var dateFormat = params[2] ? params[2] : this.dateFormat;\n var cookie; var archives;\n for (var t=tiddlers.length-1; t>=last; t--) {\n var tiddler = tiddlers[t];\n var theMonth = tiddler[field].convertToLocalYYYYMMDDHHMM().substr(0,6);\n var theDay = tiddler[field].convertToLocalYYYYMMDDHHMM().substr(0,8);\n if(theMonth != lastMonth) {\n if (lastMonth === "") {\n lastMonth = theMonth;\n }\n else {\n place.appendChild(document.createElement('hr'));\n cookie = 'chktimeline'+(i++);\n archives = this.formatString(this.monthFormat, lastMonth);\n var panel = config.macros.slider.createSlider(place,cookie,archives,this.tooltips + archives);\n wikify(theText,panel);\n lastMonth = theMonth; theText = '----\sn';\n }\n }\n if(theDay != lastDay){\n theText += tiddler[field].formatString(dateFormat) + '\sn';\n lastDay = theDay; \n }\n theText += '* [[' + tiddler.title + ']]\sn';\n }\n place.appendChild(document.createElement('hr'));\n cookie = 'chktimeline'+(i++);\n archives = this.formatString(this.monthFormat, lastMonth);\n var panel = config.macros.slider.createSlider(place,cookie,archives,this.tooltips + archives);\n wikify(theText,panel);\n place.appendChild(document.createElement('hr'));\n};\n\nconfig.macros.timeline.formatString = function(template, yyyymm)\n{\n var dateString = new Date(yyyymm.substr(0,4)+'/'+yyyymm.substr(4,2)+'/01');\n template = template.replace(/DDD|0DD|DD/g,'');\n return dateString.formatString(template);\n};\nif (!Date.prototype.convertToLocalYYYYMMDDHHMM){\n Date.prototype.convertToLocalYYYYMMDDHHMM = function(){\n return(String.zeroPad(this.getFullYear(),4) + String.zeroPad(this.getMonth()+1,2) + String.zeroPad(this.getDate(),2) + String.zeroPad(this.getHours(),2) + String.zeroPad(this.getMinutes(),2));\n }\n}\n//}}}\n
/***\n\n''This plugin was previously called StyleChooser.''\n\n|Name|SelectThemePlugin|\n|Created by|SimonBaird and SaqImtiaz|\n|Location|http://tw.lewcid.org/#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!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://tw.lewcid.org/#SelectThemePlugin"\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\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 if (oldStyleElement) 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 = config.shadowTiddlers.StyleSheet;\nconfig.shadowTiddlers.NoPageTemplate = config.shadowTiddlers.PageTemplate;\n\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\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|Name|NestedSlidersPlugin|\n|Source|http://www.TiddlyTools.com/#NestedSlidersPlugin|\n|Version|2.3.1|\n|Author|Eric Shulman - ELS Design Studios|\n|License|http://www.TiddlyTools.com/#LegalStatements <<br>>and [[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]]|\n|~CoreVersion|2.1|\n|Type|plugin|\n|Requires||\n|Overrides|Slider.prototype.stop|\n|Description|show content in nest-able 'slider' or 'floating' panels, without needing to create separate tiddlers for each panel|\n\n!!!!!Configuration\n<<<\nEnable animation for slider panels\n<<option chkFloatingSlidersAnimate>> allow sliders to animate when opening/closing\n>(note: This setting is in //addition// to the general option for enabling/disabling animation effects:\n><<option chkAnimate>> enable animations (entire document)\n>For slider animation to occur, you must also allow animation in general.\n\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\n<<<\nWhen installed, this plugin adds new wiki syntax for embedding 'slider' panels directly into tiddler content. Use {{{+++}}} and {{{===}}} to delimit the slider content. You 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\nAdditional optional syntax elements let you specify\n*default to open\n*cookiename\n*heading level\n*floater (with optional CSS width value)\n*transient display (clicking elsewhere closes panel)\n*custom class/label/tooltip/accesskey\n*alternate label/tooltip (displayed when panel is open)\n*panelID (for later use with {{{<<DOM>>}}} macro. See [[DOMTweaksPlugin]])\n*automatic blockquote style on panel\n*deferred rendering of panel content\nThe complete syntax, using all options, is:\n//{{{\n++++(cookiename)!!!!!^width^*{{class{[label=key|tooltip][altlabel|alttooltip]}}}#panelID:>...\ncontent goes here\n===\n//}}}\nwhere:\n* {{{+++}}} (or {{{++++}}}) and {{{===}}}<br>marks the start and end of the slider definition, respectively. When the extra {{{+}}} is used, the slider will be open when initially displayed.\n* {{{(cookiename)}}}<br>saves the slider opened/closed state, and restores this state whenever the slider is re-rendered.\n* {{{!}}} through {{{!!!!!}}}<br>displays the slider label using a formatted headline (Hn) style instead of a button/link style\n* {{{^width^}}} (or just {{{^}}})<br>makes 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* {{{"*"}}} //(without the quotes)//<br>denotes "transient display": when a click occurs elsewhere in the document, the slider/floating panel will be automatically closed. This is useful for creating 'pulldown menus' that automatically go away after they are used.\n* """{{class{[label=key|tooltip][altlabel|alttooltip]}}}"""<br>uses label/tooltip/accesskey. """{{class{...}}}""", """=key""", """|tooltip""" and """[altlabel|alttooltip]""" are optional. 'class' is any valid CSS class name, used to style the slider label text. 'key' must be a ''single letter only''. altlabel/alttooltip specifiy alternative label/tooltip for use when slider/floating panel is displayed.\n* {{{#panelID:}}}<br>defines a unique DOM element ID that is assigned to the panel element used to display the slider content. This ID can then be used later to reposition the panel using the {{{<<DOM move id>>}}} macro (see [[DOMTweaksPlugin]]), or to access/modify the panel element through use of {{{document.getElementById(...)}}}) javascript code in a plugin or inline script.\n* {{{">"}}} //(without the quotes)//<br>automatically adds blockquote formatting to slider content\n* {{{"..."}}} //(without the quotes)//<br>defers rendering of closed sliders until the first time they are opened. //Note: deferred rendering may produce unexpected results in some cases. Use with care.//\n\n//Note: to make slider definitions easier to read and recognize when editing a tiddler, newlines immediately following the {{{+++}}} 'start slider' or preceding the {{{===}}} 'end slider' sequence are automatically supressed so that excess whitespace is eliminated from the output.//\n<<<\n!!!!!Examples\n<<<\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, transient, 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,\n plus a floating panel with more specific info:\n +++^10em^[view details...|click for details]\n put some detail here, which could in turn contain a transient panel,\n perhaps 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,\n plus a floating panel with more specific info:\n +++^10em^[view details...|click for details]\n put some detail here, which could in turn contain a transient panel,\n perhaps 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''2007.07.26 - 2.3.1'' in document.onclick(), propagate return value from hijacked core click handler to consume OR bubble up click as needed. Fixes "IE click disease", whereby nearly every mouse click causes a page transition.\n''2007.07.20 - 2.3.0'' added syntax for setting panel ID (#panelID:). This allows individual slider panels to be repositioned within tiddler content simply by giving them a unique ID and then moving them to the desired location using the {{{<<DOM move id>>}}} macro.\n''2007.07.19 - 2.2.0'' added syntax for alttext and alttip (button label and tooltip to be displayed when panel is open)\n''2007.07.14 - 2.1.2'' corrected use of 'transient' attribute in IE to prevent (non-recursive) infinite loop\n''2007.07.12 - 2.1.0'' replaced use of "*" for 'open/close on rollover' (which didn't work too well). "*" now indicates 'transient' panels that are automatically closed if a click occurs somewhere else in the document. This permits use of nested sliders to create nested "pulldown menus" that automatically disappear after interaction with them has been completed. Also, in onClickNestedSlider(), use "theTarget.sliderCookie", instead of "this.sliderCookie" to correct cookie state tracking when automatically dismissing transient panels.\n''2007.06.10 - 2.0.5'' add check to ensure that window.adjustSliderPanel() is defined before calling it (prevents error on shutdown when mouse event handlers are still defined)\n''2007.05.31 - 2.0.4'' add handling to invoke adjustSliderPanel() for onmouseover events on slider button and panel. This allows the panel position to be re-synced when the button position shifts due to changes in unrelated content above it on the page. (thanks to Harsha for bug report)\n''2007.03.30 - 2.0.3'' added chkFloatingSlidersAnimate (default to FALSE), so that slider animation can be disabled independent of the overall document animation setting (avoids strange rendering and focus problems in floating panels)\n''2007.03.01 - 2.0.2'' for TW2.2+, hijack Morpher.prototype.stop so that "overflow:hidden" can be reset to "overflow:visible" after animation ends\n''2007.03.01 - 2.0.1'' in hijack for Slider.prototype.stop, use apply() to pass params to core function\n|please see [[NestedSlidersPluginHistory]] for additional revision details|\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: 3, revision: 1, date: new Date(2007,7,26)};\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;\nif (config.options.chkFloatingSlidersAnimate==undefined) config.options.chkFloatingSlidersAnimate=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[[^\s\s]]*\s\s])?(?:\s\s}{3})?(\s\s#[^:]*\s\s:)?(\s\s>)?(\s\s.\s\s.\s\s.)?\s\ss*",\n handler: function(w)\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 // var defopen=lookaheadMatch[1]\n // var cookiename=lookaheadMatch[2]\n // var header=lookaheadMatch[3]\n // var panelwidth=lookaheadMatch[4]\n // var transient=lookaheadMatch[5]\n // var class=lookaheadMatch[6]\n // var label=lookaheadMatch[7]\n // var openlabel=lookaheadMatch[8]\n // var panelID=lookaheadMatch[9]\n // var blockquote=lookaheadMatch[10]\n // var deferred=lookaheadMatch[11]\n\n // location for rendering button and panel\n var place=w.output;\n\n // default to closed, no cookie, no accesskey, no alternate text/tip\n var show="none"; var cookie=""; var key="";\n var closedtext=">"; var closedtip="";\n var openedtext="<"; var openedtip="";\n\n // extra "+", default to open\n if (lookaheadMatch[1]) show="block";\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 show=config.options[cookie]?"block":"none";\n }\n\n // parse label/tooltip/accesskey: [label=X|tooltip]\n if (lookaheadMatch[7]) {\n var parts=lookaheadMatch[7].trim().slice(1,-1).split("|");\n closedtext=parts.shift();\n if (closedtext.substr(closedtext.length-2,1)=="=") \n { key=closedtext.substr(closedtext.length-1,1); closedtext=closedtext.slice(0,-2); }\n openedtext=closedtext;\n if (parts.length) closedtip=openedtip=parts.join("|");\n else { closedtip="show "+closedtext; openedtip="hide "+closedtext; }\n }\n\n // parse alternate label/tooltip: [label|tooltip]\n if (lookaheadMatch[8]) {\n var parts=lookaheadMatch[8].trim().slice(1,-1).split("|");\n openedtext=parts.shift();\n if (parts.length) openedtip=parts.join("|");\n else openedtip="hide "+openedtext;\n }\n\n var title=show=='block'?openedtext:closedtext;\n var tooltip=show=='block'?openedtip:closedtip;\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 btn.innerHTML=title; // enables use of HTML entities in label\n\n // set extra button attributes\n btn.setAttribute("closedtext",closedtext);\n btn.setAttribute("closedtip",closedtip);\n btn.setAttribute("openedtext",openedtext);\n btn.setAttribute("openedtip",openedtip);\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 btn.onmouseover=function(event) // mouseover on button aligns floater position with button\n { if (window.adjustSliderPos) window.adjustSliderPos(this.parentNode,this,this.sliderPanel,this.sliderPanel.className); }\n\n // create slider panel\n var panelClass=lookaheadMatch[4]?"floatingPanel":"sliderPanel";\n var panelID=lookaheadMatch[9]; if (panelID) panelID=panelID.slice(1,-1); // trim off delimiters\n var panel=createTiddlyElement(place,"div",panelID,panelClass,null);\n panel.button = btn; // so the slider panel know which button it belongs to\n btn.sliderPanel=panel; // so the button knows which slider panel it belongs to\n panel.defaultPanelWidth=(lookaheadMatch[4] && lookaheadMatch[4].length>2)?lookaheadMatch[4].slice(1,-1):"";\n panel.setAttribute("transient",lookaheadMatch[5]=="*"?"true":"false");\n panel.style.display = show;\n panel.style.width=panel.defaultPanelWidth;\n panel.onmouseover=function(event) // mouseover on panel aligns floater position with button\n { if (window.adjustSliderPos) window.adjustSliderPos(this.parentNode,this.button,this,this.className); }\n\n // render slider (or defer until shown) \n w.nextMatch = lookaheadMatch.index + lookaheadMatch[0].length;\n if ((show=="block")||!lookaheadMatch[11]) {\n // render now if panel is supposed to be shown or NOT deferred rendering\n w.subWikify(lookaheadMatch[10]?createTiddlyElement(panel,"blockquote"):panel,this.terminator);\n // align floater position with button\n if (window.adjustSliderPos) window.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[10]?"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\n // toggle label\n theTarget.innerHTML=isOpen?theTarget.getAttribute("closedText"):theTarget.getAttribute("openedText");\n // toggle tooltip\n theTarget.setAttribute("title",isOpen?theTarget.getAttribute("closedTip"):theTarget.getAttribute("openedTip"));\n\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 && (theSlider.className!='floatingPanel' || config.options.chkFloatingSlidersAnimate))\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 floater panel position with target button\n if (!isOpen && window.adjustSliderPos) window.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 var cookie=theTarget.sliderCookie;\n if (cookie && cookie.length) {\n config.options[cookie]=!isOpen;\n if (config.options[cookie]!=theTarget.defOpen)\n saveOptionCookie(cookie);\n else { // remove cookie if slider is in default display state\n var ex=new Date(); ex.setTime(ex.getTime()-1000);\n document.cookie = cookie+"=novalue; path=/; expires="+ex.toGMTString();\n }\n }\n return false;\n}\n//}}}\n\n//{{{\n// click in document background closes transient panels \ndocument.nestedSliders_savedOnClick=document.onclick;\ndocument.onclick=function(ev) { if (!ev) var ev=window.event; var target=resolveTarget(ev);\n // call original click handler\n if (document.nestedSliders_savedOnClick)\n var retval=document.nestedSliders_savedOnClick.apply(this,arguments);\n // if click was inside transient panel (or something contained by a transient panel)... leave it alone\n var p=target;\n while (p)\n if ((p.className=="floatingPanel"||p.className=="sliderPanel")&&p.getAttribute("transient")=="true") break;\n else p=p.parentNode;\n if (p) return retval;\n // otherwise, find and close all transient panels...\n var all=document.all?document.all:document.getElementsByTagName("DIV");\n for (var i=0; i<all.length; i++) {\n // if it is not a transient panel, or the click was on the button that opened this panel, don't close it.\n if (all[i].getAttribute("transient")!="true" || all[i].button==target) continue;\n // otherwise, if the panel is currently visible, close it by clicking it's button\n if (all[i].style.display!="none") window.onClickNestedSlider({target:all[i].button}) \n }\n return retval;\n};\n//}}}\n\n//{{{\n// adjust floating 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 (findPosX(btn)+panel.offsetWidth > getWindowWidth()) // adjust position to stay inside right window edge\n left-=findPosX(btn)+panel.offsetWidth-getWindowWidth()+15; // add extra 15px 'fudge factor'\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//}}}\n\n//{{{\n// TW2.1 and earlier:\n// hijack Slider animation handler 'stop' handler so overflow is visible after animation has completed\nSlider.prototype.coreStop = Slider.prototype.stop;\nSlider.prototype.stop = function()\n { this.coreStop.apply(this,arguments); this.element.style.overflow = "visible"; }\n\n// TW2.2+\n// hijack Morpher animation handler 'stop' handler so overflow is visible after animation has completed\nif (version.major+.1*version.minor+.01*version.revision>=2.2) {\n Morpher.prototype.coreStop = Morpher.prototype.stop;\n Morpher.prototype.stop = function()\n { this.coreStop.apply(this,arguments); this.element.style.overflow = "visible"; }\n}\n//}}}