The [[golden-ratio]].
''Dead Right''\nby John Connolly\nSpy Magazine, 01.01.1993\n\nIT WAS A LITTLE AFTER 12:30 IN THE afternoon of August 10, 1991, and Barbara Bittinger, the assistant head housekeeper of the Sheraton Inn in Martinsburg, West Virginia, had just sat down with a cheeseburger when one of the girls from the laundry room burst in and told her that one of the chambermaids was calling from upstairs and saying somebody had better get over to Room 517, there was blood. Bittinger, who had been with the hotel for seven years, went to the room and hesitantly pushed open the bathroom door. Though she surmised that something must be terribly wrong, she was still unprepared for the ghastly scene. 'There was blood everywhere," she recalls. Because the door opened against the bathtub, and because the shower curtain was partially closed, Bittinger couldn't see into the tub, but she did see a half- full, open wine bottle near the toilet, and a broken glass and an ashtray on the edge of the tub. Then, as she slowly withdrew, she looked through the crack between the door jamb and the door into the bathtub, and saw two white knees sticking up. Startled, she pulled back, but not before she saw something else, something that still puzzles her today. Under the sink, lying more or less flat, were two bloody towels. "It looked like someone tried to wipe up the blood on the floor and slid the towels under the sink," said Bittinger, who was only interviewed by police briefly the day the body was found and never by any journalists before speaking to SPY. "It looked like someone" - not the maid, Bittinger tells us - "threw the towels on the floor and tried to wipe the blood up with their foot, but they didn't get the blood, they just smeared the floor.\n\nThe knees Bittinger saw in the bathtub belonged to freelance journalist [[Danny Casolaro]]. He had come to Martinsburg two days earlier to meet sources who would contribute to his already yearlong investigation into what he called the Octopus, a mess of interconnected high- level government conspiracies and supposed conspiracies. [[The Octopus]], in Casolaro's view encompassed the alleged theft of a sophisticated computer software program by Justice Department officials; an effort by a former [[CIA]] operative to use a California Indian reservation as a front for supplying weapons to the Nicaraguan [[contras|Iran-Contra]]; the shady connections between the [[Wackenhut Corporation]] and the [[CIA]]; the burgeoning [[BCCI]] scandal; and the [[October Surprise]]. He'd diligently pursued leads and sources and uncovered an impressive amount of information, but he seemed to have had a hard time making sense of all that he had found. He also seemed to have had trouble telling the difference between people who were trustworthy and those who were not.\n\nAccompanied by the chambermaid and a janitor, Bittinger went to the front desk and called 911. Within minutes police and paramedics were there. Casolaro was lying in a bathtub full of bloody water. I seemed pretty obvious he'd committed suicide. He had eight cuts on his left wrist and four on his right. There were two plastic trash bags floating in the water and a shoelace tied around his neck; evidently he'd thought to hasten his death by securing the bags over his head and asphyxiating but had reconsidered, either before or after slashing his wrists. There was a note that said, TO MY LOVED ONES, PLEASE FORGIVE ME - MOST ESPECIALLY MY SON - AND BE UNDERSTANDING. GOD WILL LET ME IN.\n\nTo give themselves more room to work, the paramedics took the bathroom door off its hinges. When they lifted Casolaro's body from the tub, they saw that an Old Milwaukee beer can, a paper coaster and a razor blade had been under the body. After draining the tub and examining the body, [[Sandra Brining]], a nurse who serves as the Berkeley County coroner, declared the cause of death blood loss from multiple self-inflicted wounds. Around 4:00 p.m. she released the body to Brown's, a local mortuary.\n\nSo sure was everyone that Casolaro had killed himself that that very night, even before his family was notified of his death, [[Charles Brown]], the undertaker, embalmed the body. Brown would later give the most ordinary of reasons for doing so- "I didn't want to come back to work on Sunday" - though embalming a body without the permission of the next of kin is illegal in West Virginia. Had Brown or the authorities spoken to Casolaro's brother Tony, they surely would have proceeded more carefully. Tony would have undoubtedly mentioned what Danny had said to him just a few days before: "//I have been getting some very threatening phone calls. If anything happens to me, don't believe it was accidental.//"\n\nTony wasn't the only person Danny had told that he might be in danger; he'd also told [[Thomas Gates]], a special agent of the FBI. A mysterious character named [[Robert Booth Nichols]] had become one of Danny's sources. Nichols, who is now 49 and lives in L.A., has, as federal authorities have put it, "no visible means of income to support his rather lavish life-style." He calls himself an entrepreneur and says he has been involved with the CIA in various intelligence operations; he has even appeared in and acted as a technical adviser on Under Siege, the film starring his friend Steven Seagal. Law-enforcement officials know Nichols, though, as an international money launderer and an associate of the Gambino organized-crime family.\n\nAs Casolaro worked on his Octopus story, he came to rely increasingly on Nichols as a source, and as a friend. But in July 1991, after Nichols visited him in Washington, D.C., Danny began to suspect that Nichols was far more sinister than he'd imagined, and began to investigate his activities. Three days before he died, he called Gates, who works in the bureau's L.A. office. As Gates has testified before the House Judiciary Committee, Casolaro told him that Nichols had warned Danny, "//If you continue this investigation, you will die//." Other publications, notably Vanity Fair, have wondered whether Casolaro committed suicide; none has had the benefit of the evidence we've been able to amass. Spy has discovered that on July 31 - ten days before he died, six days before he had a 64-minute phone conversation with Nichols, seven days before he spoke to Agent Gates - Danny Casolaro learned a terrible secret of Robert Booth Nichols's, a secret that, if revealed, could cost Nichols his life, a secret that Casolaro might well have told Nichols he knew.\n\nDANNY CASOLARO WAS BORN ON JUNE 16, 1947, the first of six children. His father was a prominent obstetrician in Mc Lean, Virginia. Along with prosperity, however, the Casolaros endured a large share of grief. One child was born with a heart defect and lived only briefly, and the eldest sister, Lisa, died of a drug overdose, an apparent suicide.\n\nWhen he was 20, Casolaro dropped out of Providence College and went to Ecuador for six months to look for Incan treasure. When he came back, he fell in love with a married woman, Terrill Pace. They eventually married and had a son; after 13 years, they would divorce. He went back to college but quit to become a stringer for the National Enquirer and later a reporter for the trade magazine Computer Age. His friends all speak well of him. They say he was one of the sweetest and most tolerant people they ever met; that he never seemed to care about money; that he was a dreamer. He had many friends of both sexes but was especially close to women. Gabrielle Miroy, a onetime lover and longtime friend- one of at least five former lovers whom he visited frequently and spoke with on an almost daily basis - expressed the feelings of many people when she said, "Danny was always there for me; he was my best friend." There was a Peter Pan-ishness about him. His friend Larry Stitch, a retired attorney, says, 'Although Danny was nobody's fool, he had a tendency to trust everyone.\n\nBut if he was Peter Pan, he was Peter Pan with an obsessive streak. In the late 1970s he worked for almost two years on an alternative explanation for Watergate. He spent a year on a novel he ended up publishing with a vanity house. He worked hard at staying fit but also smoked too much, occasionally drank too much and certainly pursued women too much. He also worked hard at his job. Computer Age was a daily newsletter, and for ten years Casolaro was its only reporter, and effectively ran the thing. In 1989 he took a second mortgage on his house in Fairfax, Virginia, and bought Computer Age. But a year later, pressed by the IRS for back taxes incurred under the previous owner, he sold the company at a loss. He could have worked out a payment schedule, but by then he was already chasing the story of his life.\n\nIN 1990, CASOLARO GOT A LEAD ON THE INSLAW conspiracy story. [[Inslaw]] was a computer software firm formed in 1980 by William and Nancy Hamilton to supply a program they'd created called Promis to the Justice Department. The Hamiltons received tens of millions of dollars from the federal government to develop [[PROMIS]], a system to help prosecutors across the country keep track of complex investigations. In what has become a highly publicized case, the Hamiltons allege that in 1983 a cabal of top Justice Department officials and friends of former attorney general [[Edwin Meese]] conspired to delay payments and drive them out of business to gain control of Promis for their own profit. (Meese denies all wrongdoing.) Indeed, Justice did stop paying the Hamiltons in 1983, claiming they weren't fulfilling their obligations, and eventually Inslaw did go bankrupt. In 1987 a federal judge ordered the government to pay Inslaw $6.8 million; the order was later overturned on a technicality. Promis is widely used today, both in the U.S. and by foreign law-enforcement and intelligence agencies.\n\nAs the case became known, conspiracy theories about why Promis was stolen were floated. Among those claiming to have information was [[Michael Riconosciuto]] a convicted drug dealer who had been on the periphery of many illegal and clandestine operations, who therefore knows many inside stories but also invents tales that have certain credible elements. Riconosciuto, an accomplished programmer, claims that Promis was stolen as a favor to software-company executive [[Earl Brian]], a friend of Meese's, for Brian's help in persuading the Iranian government to hold on to the embassy hostages until the 1980 election was over. (Brian denies any involvement with Inslaw.)\n\nLed down this rabbit hole by Riconosciuto (who loves an audience), egged on by Bill Hamilton (who had millions at stake), Danny Casolaro pursued the story. In time it came to possess him. He worked on it 16 hours a day, staying on the phone past midnight, sleeping only 2 or 3 hours a night, talking with quasi- spooks and bona fide spies, chasing leads, always enlarging his vision of the Octopus. He stopped working out; the man who would boastfully do 50 pushups with a cigarette in his mouth no longer could do even two. There was no question that he was onto some remarkable stories, including aspects of the BCCI scandal - (long before the scandal became public, Casolaro was saying he was going to nail [[Clark Clifford]]), the takeover of the [[Cabazon Indian Reservation]] by a former CIA operative [see Spy, "Badlands," April 1992], and the Wackenhut-CIA connection ["Inside the Shadow CIA," September 1992]. With less insistence on proving a monolithic conspiracy, he may well have pinned down those stories.\n\nFor a long time, Casolaro relied heavily on Riconosciuto, often accepting too much at face value. When Riconosciuto was arrested in March 1991 on drug charges, Casolaro flew to Seattle to serve as his volunteer pretrial investigator. In time, however, he became more skeptical, and within a few months he was refusing to accept Riconosciuto's collect calls from jail. But Casolaro had not abandoned his investigation. In August 1991 he told friends he was going to Martinsburg - where the IRS has its main national computer center - to meet sources.\n\nTHE BEST REASONS TO BELIEVE DANNY Casolaro committed suicide are the obvious ones: His corpse was found; the wounds appeared to be self-inflicted; there was a note. That evidence was certainly sufficient to quell the curiosity of the authorities who found his body. Apart from what we know about his reporting, however, there are compelling reasons to doubt that he killed himself. Admittedly, it is hard for any of us to know what is in someone's heart, even those whom we know well. That said, however, nearly everyone who knew Casolaro was surprised to hear that he had committed suicide. Certainly he was not a depressive by nature, and no one who talked to him during the last days of his life regarded him as depressed then. His friend Doug Chisholm, whom he visited a few weeks before his death, says, "Danny was excited about his story and quite taken with the woman he'd brought to lunch." Danny spent the Sunday before he died with Danielle Stallings, a longtime friend and lover. "He was in a very upbeat mood," she told us. On Monday he spoke to his pal Art Winfield, who says he was very excited about meeting a new source." The night before he left for Martinsburg, he visited his pal Larry Stitch, who says, "He was his usual upbeat and pleasant self." Indeed, he seemed to be a man who expected to live awhile. The morning he left, he stopped by his insurance agent's office and paid his homeowner's premium. He also called Stallings and asked her to arrange a meeting for when he got back. And in Martinsburg he indeed met with at least two sources, and perhaps a third; Charlotte and Ronnie DeHaven of Martinsburg told Spy they saw an alert-looking Casolaro waiting in his car in an out-of-the-way spot back behind the IRS building.\n\nOther explanations for a suicide have been suggested-that he was lonely, or broke, or despondent over contracting multiple sclerosis, a potentially fatal disease. It's true he had no mate, but he seemed truly to prefer it that way. Moreover, he had a cozy circle of friends, stayed close to his family (once, speaking of his sister's death, he told Stallings, "I could never commit suicide after what Lisa's death did to my family") and had a good relationship with his 22-year-old son. It's also true that he was having money problems. His investigation was costly, and he was facing a balloon payment on his mortgage. Still, the payment was three months off, and as Danny's ex-wife puts it, "The Casolaro children had been raised to believe that money was not a problem." Danny knew that at least two people stood ready to help him financially: his brother Tony, a well-to-do physician who had helped him before, and Stitch, a retired IBM attorney, who thought Danny was onto something important. When he visited Stitch the day before he left for Martinsburg, Stitch told him, "If push comes to shove, you can count on me financially." He replied, "I'm not there yet, but I may come back to you on that offer." It's also true that Casolaro had M.S. (which is fatal in about 1 percent of cases), but this was not known to his friends and family until after the autopsy. He had occasionally suffered the symptoms of the disease, but he didn't seek treatment, at least not from his regular doctor. He did have a general conversation about the disease with his lifelong friend Ann Marie Winfield, a nursing teacher, who told him that when the disease appears in someone Casolaro's age, it is less likely to be fatal. "I really didn't think Danny was terribly concerned," Winfield says.\n\nInterestingly, Casolaro was posthumously evaluated by two psychiatrists. The Martinsburg police hired one who thought Casolaro capable of suicide based on his mortgage difficulties and the fact that his book proposal had received three rejections-demoralizing news, certainly, but hardly extraordinary to anyone familiar with publishing. A second profile was written a week after Casolaro's death by Louis J. Petrillo, a New York psychiatrist and Casolaro's cousin. He wrote the Martinsburg police to tell them, "Casolaro did not manifest any symptoms or character traits during the day immediately preceding his death, during the past twelve months or at any time in his personal history that could, in any way, be associated with a potential for suicide."\n\nFOR TWO DAYS AFTER THE DISCOVERY OF HIS body, the Martinsburg police considered the Casolaro case to be an inconsequential matter. It wasn't until Monday, when the department received calls from Agent Gates, The Washington Post and CNBC, that they realized they had something stickier on their hands. Late on Monday - having wasted the 48- hour period after the discovery of the body that most homicide detectives regard as the most crucial in gathering evidence - they began their investigation.\n\nIt is almost an axiom among official agencies: First the screwup, then the cover-up. The authorities' initial acts-removing the door, draining the tub without straining the water to preserve evidence, not sealing the room as a crime scene-compromised the investigation from the start; so did the unauthorized embalming. Still, on January 25, 1992, five months after Casolaro died, the Martinsburg police, in conjunction with the West Virginia State Medical Examiner's Office, the Berkeley County Medical Examiner and the Berkeley County Prosecuting Attorney's Office, issued a press release reaffirming their original conclusion: Casolaro had killed himself.\n\nSince issuing their report, the police have refused to say anything further about the case. SPY repeatedly called the chief of the department, as well as the county prosecutor; neither would comment. All that speaks for the local investigation, then, is the police department's press release. It says that officials reaffirmed the original conclusion for several reasons. First, they somewhat tautologically cite the conclusion of the original autopsy that Casolaro had committed suicide and maintain that the embalming of the body in no way hampered the subsequent autopsy and toxicological studies. Second, neither the police nor the coroner were able to detect evidence of foul play. They found no signs of forced entry or a struggle. The room was neat, and neighbors had heard nothing. Third, they had the suicide note, and were convinced through handwriting analysis and fingerprints that Casolaro had written it.\n\nFinally, they conclude that he'd brought the implements of his self-destruction with him. The razor blades are sold around where Casolaro lived but not near Martinsburg. The alcohol and trace amounts of a painkiller, oxycodone, that were found in his bloodstream seemed self-ingested. There was a half- empty bottle of Portuguese wine in the room, and Casolaro had more of it at home; the oxycodone could have come from Vicodin, a painkiller prescribed for him after dental surgery in 1987 and an empty vial of which was found in the room. The plastic bags in the tub were from a box of plastic bags that he had in his luggage, and the shoestrings may have been from a pair of laceless sneakers found in his home.\n\nIt's hard to argue with these conclusions based on the material the police have made public. However, the work of Martinsburg's Finest inspires little confidence. It's understandable that they treated the initial Casolaro investigation so lackadaisically - Hey, it's hot, it's Saturday, it looks like the guy did himself, let's go home - but you'd think the national press scrutiny in the aftermath of Casolaro's death would have inspired a little more conscientiousness, if only temporarily. It didn't. Twenty days after Casolaro's death, a Martinsburg man was found by the police with a .22 caliber bullet wound in his left temple. His fiancée told them he had suddenly pulled out a gun and shot himself. Without conducting a simple and rather standard paraffin test on the girlfriend to detect gunpowder residue, the police ruled it a suicide. For some reason, they ignored the fact that the previous evening, officers had been summoned to the home by a call that shots had been fired. Nor did they question neighbors. If they had, they might have found-as I did when I talked to them-that the night before he died, the man told two people his girlfriend was after him with a gun.\n\nHere, then, is what we've been able to discover. Most of our findings amount to highly anomalous facts and unanswered questions. But we also found relevant physical evidence that the police have simply ignored. Let's begin with the police department's proof.\n\nFirst, on the matter of the integrity of the body after embalming, Dr. Michael Baden, a noted forensic pathologist, says the "embalming of the body makes the report fatally flawed." For example, he says, the measurements of alcohol in the bloodstream could have been affected by the embalming fluid.\n\nSecond, the police say they found no evidence that Casolaro had struggled against an attacker, yet they seem to have ignored two signs. According to the medical examiner, three fingernails on Casolaro's right hand appeared to have been chewed. None of his friends we've spoken to - a half dozen in all - knew him to be a nail-biter. Could fingernails broken in a fight, having been submerged for several hours in bathwater, give the appearance of being bitten? Additionally, no one looked under the nails for skin scrapings or blood. More important, the coroner found a bruise on the top of his head that probably would have induced "moderate hemorrhaghing" under the skin. What collision might have caused this? The police do not mention the bruise in their statement.\n\nThe police further dismiss the possibility of a struggle by pointing to the neatness of Casolaro's room as a sign that nothing happened there. But this neatness raises questions more than it settles them.\n\nOn Thursday, Danny met with a source. That day, he hit on a waitress in the restaurant where he had lunch, and later flirted with two other women in a bar. On Friday he met with [[Bill Turner]], a former employee of Hughes Aircraft who was one of the sources he had gone to Martinsburg to see; Turner gave him a stack of documents. The two were supposed to have dinner, but Danny begged off, saying he had to meet a source. Later he ran into friends of his brother's, who were staying at the Sheraton; they say he seemed cheerful. These were the last known people to see him alive. Authorities say Danny died in the early-morning hours of Saturday. The distance between being hard at work and in a good mood to despondently scribbling a suicide note is a long one to travel in a few hours. But even if Casolaro had plunged into a fugue state overnight and before sunup killed himself, questions occur. Except for the bathroom, Room 517 was extremely neat: The place was picked up, the bed was crisply made and undisturbed, and Casolaro's pants were folded on the bed. But as his friends tell us, he was not an especially neat person. So we are asked to believe that a cheerful Danny went to meet a source, then either went somewhere else and got depressed or went back to his room and - without disturbing anything, but taking the time to uncharacteristically fold his pants - scribbled a desperate note and killed himself.\n\nOn the other hand, maybe there were other people in the room, and they tidied up.\n\nThe police seem to be on firm ground on the third element of their conclusion, the suicide note. Yet friends offer two observations: Its mention of God was very odd for someone unreligious, and the 19-word note was uncharacteristically succinct. Danny was a wordy fellow. The brevity of the note - like the bitten nails of a non-nail-biter, like the sudden swing into black depression of someone who had not much earlier been feeling fine - makes it seem as though Danny was highly agitated when he began writing, and was not composing his farewell calmly. This raises the possibility that the note was written under duress.\n\nFinally, the local authorities make much of the fact that Casolaro had brought with him razor blades, shoestrings, wine and Vicodin (they say he bought the plastic bags in town). They say this indicates premeditation on his part. Of course, that's at complete variance with everything we know about Casolaro's outward behavior during his final days.\n\nStill, let's say that Casolaro was fooling everyone at the end-being sociable, paying his house insurance, hitting on women in a bar, all to hide his pain. Then we have to wonder what he was planning to do with these telling items. Perhaps the idea was to take the codeine and wine and drift away, possibly hastening death by tying the bags on his head. If so, then he prepared poorly. There was a very low level of oxycodone in his bloodstream-perhaps one or two tablets' worth, not enough to do himself in. But let's say that's the case, that he prepared poorly and did not feel himself growing drowsy and (not liking the feeling of the bag on his face, or perhaps never putting the bag on) decided to cut his wrists.\n\nIf he did so, he slashed himself with brutal ferocity. He was cut 12 times; the cuts on the right wrist extended to the tendons, and the cuts on the left hit tendons. "I've never seen such deep incisions on a suicide," Martinsburg paramedic Don Shirley told Spy. "I don't know how he didn't pass out from the pain after the first two slashes." Agent Gates has testified that he asked a Martinsburg police captain how it happened: "The captain said, 'He hacked his wrists.' I said, 'What does that mean?' He said, 'The wrists were cut, but they were cut almost in a slashing or hacking motion."' Dr. James Starts of George Washington University reviewed the autopsy-which he on the whole found to be thorough-and said in an interview, "One thing that was surprising to me is that I didn't see any hesitation marks. In suicides, you tend to find hesitation marks. People generally don't know the amount of pain they can tolerate, so they will hesitate and take, literally, a little slice. This man really cut deeply. . . down to the tendons. That's significant. That's unusual." Unusual indeed. Both Danny's brother and his ex-wife told us that Danny had always been afraid of needles and blood.\n\nIt's worth noting that while plastic bags can be used in suicides, they also have a recognized place in torture and interrogation techniques. According to Lynn Nottage of Amnesty International, putting a bag over the head produces the same effect as repeatedly dunking the head underwater. Its great attraction, she says, is that it leaves no marks.\n\nBut along with their bungling of the evidence, the police leave some questions unanswered. Casolaro carried with him everywhere an accordion file full of notes and references. The police say nothing about its whereabouts, other than that they conducted a canine search along a one-mile stretch of highway near the hotel and didn't find it. Neither did they find anything resembling Bill Turner's stack of documents. Obviously, someone could have taken the papers away - it's possible to reach Room 517 from the parking lot, without going through a lobby.\n\nOther friends - his female friends - point out something else unusual: Casolaro didn't like to be seen in the nude. "Danny never would have been caught naked by strangers," Terrill told us. Other lovers say that even after making love, he would cover himself with a towel to go to the bathroom. Danielle Stallings says that "on a few occasions at my pool, Danny would suggest we all sunbathe naked, but Danny's idea of being naked was for the women to be naked and Danny to be in the pool." Her comments echoed Terrill's. "Danny was not comfortable being naked," she said, and she thought it unusual that he would decide to go to his death that way.\n\nHad police spoken to Casolaro's friends, they would have known about his upbeat mood, his feelings about nakedness, his propensity for untidiness, his squeamishness about blood, his wordiness, his attachment to his files, and much more. But the police didn't interview any of them. Had police spoken to his cousin, Dr. Petrillo, they would have learned something about his psychological profile. But even after Petrillo contacted the authorities, they didn't interview him. Had police spoken to FBI Agent Gates, they would have known that Casolaro felt he was in mortal danger. But even after Gates contacted the authorities, they didn't interview him.\n\nAnd apart from a cursory questioning on August 10, the police didn't even thoroughly interview Barbara Bittinger, one of the first people to view the scene, the hotel housekeeper who saw the towels under the sink in Room 57.\n\n'It looked like someone threw the towels on the floor and tried to wip up the blood with their foot," she told us. Given that she'd spent seven years cleaning up bathrooms at the Martinsburg Sheraton, Barbara Bittinger's opinion of what a floor looks like when somebody has tried to wipe it up may be considered expert. It's inconceivable that Casolaro - painfully wounded and rapidly losing consciousness - would have wiped up the floor. But someone who did not want to leave footprints or fingerprints or his own bloodstains might have tried to clean up the scene.\n\nAs part of their investigation, the Martinsburg police asked Dr. Henry C. Lee of the Connecticut State Police Forensic Science Laboratory, a renowned blood-splatter expert to examine the evidence. His conclusion, cited in the police press release, held that "none of the physical evidence found at the scene is inconsistent with that of a suicide." But when we talked to Dr. Lee, he told us he didn't recall seeing any smear marks or bloody towels in the photos supplied him. "A reconstruction is only as good as the information supplied by the police," he said. The Martinsburg police apparently didn't think the towels were worth treating as evidence.\n\nWe spoke to Ernie Harrison, who worked for a professional cleaning company called Le Scrub that the hotel hired to clean Room 517 after the police had finished their physical examination. "There were bloodstained towels on the bathroom floor that I picked up," he told us. After Harrison finished cleaning the room, he tossed the towels away.\n\nBY THE LATE SPRING OF 1991, [[Robert Booth Nichols]] had become one of Danny Casolaro's most important sources. They spoke frequently and at length, and it's not hard to see how Casolaro would come to depend, not only for information but in an emotional way, on someone who knew so much and with whom he could puzzle out the mysteries before him. "It is as though he considered him a friend and not just a source of information," says Wendy Weaver, one of Casolaro's ex-girlfriends.\n\nThey had a lot in common. Nichols's father, like Casolaro's, was a physician, and both sons grew up with privilege. Danny was a college dropout; Nichols got a degree through the mail. Both men liked the ladies. But Nichols was smooth and polished and exciting. Although he was only a few years older than Casolaro, he was very much the elder, the mentor, the teacher. He had even promised to help Danny financially; apparently he was going to lend Casolaro money in return for a 25 percent interest in his home. "It seemed as though Danny had this father-son-type relationship with Nichols," says Gabrielle Miroy, Danny's friend. It's telling that in the cast of characters Casolaro drew up for his projected exposé of the Octopus, the name of Nichols, one of his major sources, is never included\n\nHow much Casolaro learned about Nichols is unclear; we know Nichols was a man as comfortable in the underworld as in the intelligence community and that he was associated with people who treated killing as an ordinary part of doing business\n\nAccording to an affidavit sworn to by Agent Gates during the course of a 1987 investigation into mob activities in Hollywood, Nichols was identified by the FBI as early as 1978 as a drug trafficker and money launderer. Just two years later, Nichols was representing a group of unknown investors who wanted to take over [[Summa Corporation]], the holding company of Howard Hughes's empire. Hughes had just died, and Nichols had convinced a Saudi company called [[Ali & Fahd Shobokshi Group]] to become partners in the (failed) takeover attempt. [[Joseph Cicippio]], who would later be taken hostage in Lebanon, was then the London manager of Ali & Fahd. In a 1980 letter to [[William Lummis]], chairman of Summa, obtained by Spy, Cicippio states, "We are ready, willing and able to provide such finances as may be necessary to acquire Summa."\n\nCicippio, who lives in Princeton, New Jersey, says he specifically remembers Nichols telling him he was representing interests of the U.S. government in the acquisition of Summa. In an interview with Spy, Cicippio said that over a six or seven week period, "Nichols presented me with U.S. Justice Department identification and furnished us with financial and other information on Summa of a highly confidential nature. I assumed he only could have gotten this information from someone high up in the government.\n\nBy 1981, Nichols had become partners with a retired arms manufacturer named [[Peter Zokosky]] to form a munitions company, [[Meridian Arms]], which in turn joined up with a tiny California Indian tribe and the CIA-connected Wackenhut Corporation in a scheme to manufacture arms on the Indians' reservation. Nichols had his own connection to the agency. In obtaining the required California permits to possess and sell machine guns in Meridian's quest to provide guns for the contras, Nichols received a recommendation from a CIA official named [[Larry Curran]]. Apparently neither Curran nor the California Justice Department agents who issued the permits were alarmed by the FBI's reports on Nichols, or by the fact that he had used several aliases at different times in his life. They even overlooked Nichols's listing of [[Harold Okimoto]], believed by intelligence sources to be a high-ranking member of Japan's Yakuza crime syndicate, as a former employer on his application to carry a concealed weapon.\n\nOne of the members of the board of directors of Meridian Arms's parent company was [[Eugene Giaquinto]], then president of the home-entertainment division of MCA, the parent company of Universal Pictures. As part of Gates's investigation of mob influence in the movie industry, the FBI targeted Giaquinto, who was suspected of a variety of criminal acts. They placed him under surveillance and tapped his phones [see Spy, The Fine Print, July and August 1989]. Agents caught Giaquinto and Nichols lunching at Le Dome, the swank Los Angeles show business restaurant, and afterward transferring a box from Giaquinto's car to Nichols's. The taps caught them discussing possible takeovers of MCA, and the effect on stock prices. It was also evident from the wiretaps that Giaquinto enjoyed a special relationship with [[John Gotti]]. (The investigation was later quashed by Reagan-administration officials.)\n\nWhen reports of the investigation surfaced, Giaquinto left MCA, as well as the board of Meridian. Before that happened, though, he tried to get his friend Nichols a big assignment. Spy has learned that Giaquinto-in his capacity as MCA's home-video honcho-approached [[Jack Valenti]], the powerful chairman of the Motion Picture Association of America, and proposed that Valenti hire Nichols to coordinate the industry's anti-video-piracy effort in Asia. Valenti met with Giaquinto and Nichols but passed. "I didn't feel comfortable with Nichols," Valenti told Spy. One advantage Nichols might have enjoyed in the job of Asian antipiracy policeman would have been his close relationship with the Hawaii-based Okimoto, the alleged Yakuza associate; the two reportedly go back a long way. On the other hand, an antipiracy policeman with close ties to the Gambinos and the Yakuza might not be much of a policeman at all\n\nNichols has replied to Gates's affidavit linking him to John Gotti and the Gambinos through connections at MCA by suing the 17-year veteran and the U.S. government for libel and slander. (The case was recently dismissed.) Some say he has replied in other ways: Gates has testified before the House Judiciary Committee that he has twice heard from informants that Nichols has put a contract out on his life.\n\n[[Alan Boyack]], a former CIA operative now practicing law in Utah, has known Nichols for 15 years and says, "Nichols is lethal." Spy has obtained the transcript of a conversation between Boyack, Michael Riconosciuto and a former FBI agent, [[Ted Gunderson]], in which Riconosciuto describes an occasion where Nichols wanted to deliver a message to a mobster from Chicago. He hung the man upside down on a hoist in an airplane hangar in front of a prop plane, then started the engine of the plane and revved it up, so that the man hanging on the hoist was sucked toward the propellers. According to Riconosciuto, "By the time Bob got finished with him, he wanted to die."\n\nCASOLARO WAS INTRODUCED TO Nichols by [[Bill Hamilton]], the Inslaw man. Hamilton seems aware that Nichols and Casolaro had grown close. In fact, on August 9, 1991, at 12:50 p.m.-about 12 hours before Casolaro died-Hamilton called Nichols at his home in California. They talked for three and a half minutes. Hamilton claims now that he was looking for Casolaro, whom he hadn't heard from in a few days. "Robert Booth Nichols," Hamilton told Spy, "is a very strange and dangerous guy."\n\nNevertheless, despite Hamilton's professed reservations about Nichols's char- acter, the man who designed a program for tracking criminals and the man who has been linked by the FBI to two crime organizations communicate with surprising frequency. Last summer I visited Hamilton's office in Washington to get a copy of the phone records that would show his call to Nichols on August 9, 1991. He seemed reluctant. It took a fair amount of persuasion to convince him to turn it over-and what he gave me was a photocopy with all but that call blocked out. Shortly after leaving, I remembered that I had wanted to ask him something else and returned to his office. While I was waiting in the reception area, the phone rang. The receptionist buzzed Hamilton: "Robert Booth Nichols, returning your call." When I asked Hamilton about the call, he replied, "I call Nichols all the time. It was just a coincidence that it was right after you left."\n\nBy July 1991, the relationship between Nichols and Casolaro had begun to deteriorate. On July 7, Nichols flew from Puerto Rico to Washington to meet with Casolaro. He stayed several days. There's no telling exactly what they talked about, but it was after this visit that Casolaro told Agent Gates that Nichols had warned him, "If you continue this investigation, you will die." One night, Casolaro and Nichols went out to dinner, accompanied by Wendy Weaver. "During the evening," she told Spy, "Nichols took exception to the imagined slight made to me by a patron at the bar. Nichols grabbed the man, slammed him against the wall and threatened to kill him. Later that night, Danny told me that Nichols really scared him."\n\nAfter that, Casolaro began trying to find out who Robert Booth Nichols really was. He found Gates and began asking questions, telling him where he was going and finally, three days before he died, asking whether he should take Nichols's threats seriously. But Casolaro was talking to someone else on the West Coast as well, a man named [[Richard Stavin]] a former special prosecutor for the Justice Department who had been assigned to the MCA case. In his investigation of the MCA case, Stavin had unearthed documents about Nichols, who was also a target of his probe. On July 31, 1991, Casolaro had a 55-minute conversation with Stavin. Danny must have thought he had hit the jackpot: Stavin told him that Nichols had been a money launderer and that he was connected to the Gambino crime family and the Yakuza.\n\nBut Stavin told Casolaro something else, something that upon reflection, he now says, "maybe I shouldn't have told him." Stavin told Casolaro that in the late 1970s, Robert Booth Nichols had offered to become a confidential informant for the Department of Justice-in other words, a snitch. Stavin doesn't know whether any law enforcement agency accepted Nichols's offer. When the prosecutor asked other agencies, "we received denials across the board," he says, "but it seemed like a cover-your-ass situation." To some people, of course, it would be irrelevant whether Nichols had ever actually performed as a stool pigeon or not. But if John Gotti, for example, had ever found out what Danny Casolaro had found out, Nichols would be a dead man.\n\nSix days after speaking to Stavin, Danny Casolaro, who "still had a young man's vision of his immortality," according to his friend Larry Stitch, had a long phone conversation with Robert Booth Nichols. The next day, Casolaro was telling Agent Gates that Nichols had warned him to abandon the investigation. The following morning he left for Martinsburg, where two days later Barbara Bittinger saw his blood on a pair of towels underneath a hotel sink.
''Spooks in Congress''\n\n*[[Robert R. Simmons]] \n**Robert Ruhl Simmons (R - CT - 2) was born February 11, 1943 in New York City. Simmons was educated at Haverford College, served in the United States Army and the ''Central Intelligence Agency'' ([[CIA]]), and was a staff member for Senator John Chafee of Rhode Island, and a member of the Connecticut General Assembly. Simmons is a moderate, favoring the environment and pro-choice. Simmons was a recipient of former House Majority Leader [[Tom DeLay]]'s ARMPAC campaign contributions. DeLay is being prosecuted on charges of felony money laundering of campaign finances and conspiracy to launder money.\n''Committees''\n**House Committee on Armed Services\n**House Defense Review Threat Panel\n***Subcommittee on Projection Forces\n***Subcommittee on Readiness \n**House Committee on Homeland Security\n***Subcommitteeon Emergency Preparedness Science and Technology\n***Subcommittee on Intelligence Information Sharing and Terrorism Risk Assessment - Chair\n***Subcommittee on Prevention of Nuclear and Biological Attack \n**House Committee on Transportation and Infrastructure\n***Subcommittee on Coast Guard and Maritime Transportation\n***Subcommittee on Highways Transit and Pipelines\n***Subcommittee on Railroads\n\n*[[Porter Goss]]\n**Porter Johnston Goss (R - FL), Director of the Central Intelligence Agency since April 21, 2005, resigned on May 5, 2006, and President George W. Bush accepted his resignation. Neither Goss nor Bush "explained why Goss was leaving and no replacement was announced." Bush’s new chief of staff, Joshua B. Bolten, "has made several changes since taking over" in April 2006. Goss has served as the 19th Director of Central Intelligence from September 24, 2004. A former Congressman and member of the CIA (late 50's to approximately the early 70's, used to run covert operations in Latin America), Goss was nominated August 11, 2004, by George W. Bush to replace George J. Tenet. \n**Goss has been on the radar of the International Citizens' Inquiry into 9/11 since September 11, 2001, and "If the 9-11 Commission is really looking for a smoking gun, it should look no further than at Lieutenant-General [[Mahmoud Ahmad]], the director of the Pakistani Inter-Services Intelligence ([[ISI]]) at the time. In early October 2001, Indian intelligence learned that Mahmoud had ordered flamboyant [[Saeed Sheikh]] - the convicted mastermind of the kidnapping and killing of Wall Street Journal reporter [[Daniel Pearl]] - to wire US$100,000 from Dubai to one of hijackers [[Mohammed Atta]]'s two bank accounts in Florida.\n**"A juicy direct connection was also established between Mahmoud and Republican Congressman Porter Goss and Democratic Senator [[Bob Graham]]. They were all in Washington together discussing [[Osama bin Laden]] over breakfast when the attacks of September 11, 2001 ([[9-11]]), happened." - [[here|http://inn.globalfreepress.com/modules/news/article.php?storyid=485]] and [[here|http://www.atimes.com/atimes/Front_Page/FD08Aa01.html]]. The Pakistan / ISI / Porter Goss connection is described [[here|http://globalresearch.ca/articles/CHO407A.html]] and [[here|http://www.communitycurrency.org/Prime.html]]. Not surprisingly, the Goss-ISI connection was ignored at his confirmation hearings to be CIA Director.\n**On March 18, 2005, Reuters reported that Porter Goss "defended his spy agency's current interrogation practices but could not say all methods used as recently as last December conformed to U.S. law. U.S. officials do not view torture as a method for gaining vital intelligence," Goss said. But he acknowledged "some CIA operatives may have been uncertain about approved interrogation techniques in the past." Goss told the Senate Armed Services Committee 'The United States does not engage in or condone torture, ... I know for a fact that torture is not productive. That's not professional interrogation. We don't torture." [[source|http://www.infowars.com/articles/ps/torture_goss_we_dont_torture.htm]]\n**Goss promoted [[Kyle Dusty Foggo]] to be the CIA's executive director and top budget chief. Foggo is now at the center of a growing investigation into a federal bribery case that has already sent former California Congressman [[Randy Duke Cunningham]] to prison for more than eight years. A source close to the investigation tells TIME that the Justice Department is investigating reports that one of Cunningham's benefactors, Pentagon and CIA contractor [[Brent Wilkes]], a buddy of Foggo's since high school, provided Foggo with improper gifts, such as lavish vacations. A CIA spokesman says Foggo "denies any improper gifts," and Wilkes' lawyer has similarly denied any wrongdoing. [[Salon|http://www.salon.com/news/feature/2006/05/06/goss/index.html]] reports that the CIA is investigating whether a top agency official, Kyle "Dusty" Foggo, improperly steered a $2.4 million contract to his close college friend Brent Wilkes, a defense contractor implicated in the Cunningham case. Wilkes reportedly supplied prostitutes to Cunningham at poker parties that Foggo also attended, though the CIA official denies seeing the female entertainment. One wonders whether it's the DOJ or the CIA that is really conducting the investigation, or both.\n**Goss' final accomplishment as CIA director -- such as it was -- was forcing out of her job a highly respected veteran intelligence officer, [[Mary McCarthy]], for the purported leaking of classified information about secret CIA prisons abroad. McCarthy has denied being the leaker -- and her more obvious offenses were serving in the Clinton administration and donating $2,000 to [[John Kerry]]'s 2004 presidential campaign.\n\n*[[Mark Kirk]]\n**Mark Steven Kirk (R - IL -10) - (born September 15, 1959) has been a Member of Congress since 2001, representing the 10th District of Illinois. He had not revealed to Illinois voters that he was involved in clandestine operations with the CIA. [Before the CIA was formed in 1947, most foreign espionage was performed by Naval Intelligence, which continues such activities today.] Kirk's exact role is unknown, although important enough to earn him the award for US Naval intelligence officer of the year in 1999. The next year he was elected to represent Illinois' 10th district in Congress. This was surprising because Kirk's bio shows him jumping among different political jobs every year while spending much time on active-duty in the Navy in places like Panama and Haiti. He hadn't lived in the state of Illinois since his high school days some 23 years prior. He never held any elected office and never worked in Illinois. He had no local name recognition until he somehow attracted large sums of money to run for Congress. Did the Republicans in the 10th District of Illinois select Mark Kirk to represent them because no local Republicans were capable, or were they told to rubberstamp Kirk for Congress by countless advertisements? \n**Kirk’s Democratic opponent in 2004, Lee Goodman, complained that Kirk’s employment by the CIA while serving in Congress is unethical and illegal. When questioned about the matter by a reporter for the Waukegan News Sun newspaper, Kirk said the Congressional Record was wrong. Kirk said that although he used to work for the CIA while he was also working for the U.S. State Department, he no longer works for the spy agency. Lee Goodman, who lived in the 10th district all his life, offered his thoughts: “If a Congressman has been secretly working for the CIA, the whole country has a right to know about it. Congress is supposed to be overseeing the CIA. Not the other way around.” \n**Mark Kirk is not concerned about lawsuits because his wife, a former naval intelligence officer, is now a lawyer working in the CIA's general counsel office in Washington DC. Meanwhile, there are no Congressional investigations into the CIA's 9-11 failures, no investigations into CIA torture prisons, and no investigations into secret CIA "extraordinary renditions" where suspects are snatched off the streets and flown to friendly dictatorships for painful questioning. It concerns few in Congress that Italy has issued European arrest warrants for 22 CIA agents for kidnapping. There are billions of dollars in cash that have been "lost" in Iraq during CIA operations, and few in Congress care. Is this because congressmen are afraid of the CIA? Are their campaigns funded indirectly by the CIA? Has the CIA blackmailed most congressmen? Don't expect the corporate press to ask these questions, because they may find the answers unfit to print.
''A Fantastic Tale''\n//Turkey, Drugs, Faustian Alliances & Sibel Edmonds//\nby John Stanton\n\n\nTaking Turkey as the focal point and with a start date of 1998, it is easy to speculate why [[Sibel Edmonds]] indicated that there was a convergence of US and foreign counter-narcotics, counter-terrorism and US national security and economic interests all of which were too preoccupied to surface critical information warning Americans of the attacks of September 11, 2001. After all, who would have believed drug runners operating in Central Asia? And besides, President Clinton was promoting Turkey, one of the world’s top drug transit points, as a model for Muslim-Western cooperation and a country necessary to reshape the Middle East.\n\nThe FBI’s Office of International Operations, in conjunction with the [[CIA]] and the US State Department counter-narcotics section, the United Kingdom’s MI6, Israel’s Mossad, Pakistan’s ISI, the US DEA, Turkey’s MIT, and the governments and intelligence agencies of dozens of nations, were in one way or another involved in the illicit drug trade either trying to stop it or benefit from it. What can be surmised from the public record is that from 1998 to September 10, 2001, the [[War on Drugs]] kept bumping into the nascent [[War on Terror]] and new directions in US foreign policy.\n\nIt’s easy to imagine the thousands of drug couriers, middlemen, financiers and lab technicians moving back and forth between Pakistan and Turkey, and over to Western Europe and the United States, and the tidbits of information they gleaned from their sponsors as they traveled. As information gathering assets for the intelligence agencies of the world, they must have been invaluable. And given the dozens of foreign intelligence services working in the counter-narcotics/terrorism fields, the “chatter” that just dozens of well-placed operatives may have overheard about attacks against Western targets must have found its way into the US intelligence apparatus. But, again, who could believe the audacity of non-state actors organizing a domestic attack against the supreme power of the day, the USA? Implementing a new strategic direction and business deals may have overcome the wacky warnings from the counter-narcotics folks.\n\nBack in the late 1990’s and early 2000, who would have believed the rants of a drug courier from Afghanistan saying that some guy named Bin Laden was going to attack America, particularly if it involved America’s newest friend, Turkey? Or that a grand design to reshape Central Asia and the Middle East with Turkey and Israel as pivot points was being pushed by the Clinton Administration as a matter of national policy.\n\nThe historical record shows that the US War on Drugs and the nascent War on Terror kept colliding with not only within the US intelligence, policy and business apparatus, but also with European strategic and business interests. Turkey continues its push for entry into the European Union and the USA wants that to happen as the June 2004 meeting of NATO, and President Bush’s attendance under dangerous circumstances in Turkey demonstrates. Turkey is one of the USA’s and Europe’s top arms buyers and is located near what could be some of the biggest oil and natural gas fields in the world. At this point it’s worth noting that the one of the FBI’s tasks is to counter [[industrial espionage]] and to engage in it. Where big arms sales pit the US against its European competitors - as is the case in Turkey (particularly starting in 1998) - the FBI is busy making sure the US gets the edge over its competition. Allies are friends only so far.\n\nDid warnings foretelling of an attack on American soil by Bin Laden’s crew get lost in the War on Drugs or the US national and economic interest in troublesome Turkey? It seems only Ms Edmonds knows.\n\n''Turkey Cold to UK and USA Concerns''\n\nIn 1998, the US Department of State ([[DOS]]) was finally forced to admit that Turkey was a major refining and transit point for the flow of heroin from Southwest Asia to Western Europe, with small quantities of the stuff finding its way to the streets of the USA. In that same year, Kendal Nezan, writing for Le Monde Diplomatique, reported that [[MIT]], and the Turkish National Police force were actively supporting the trade in illicit drugs not only for fun and profit, but out of desperation.\n<<<\n “After the Gulf War in 1991, Turkey found itself deprived of the all-important Iraqi market and, since it lacked significant oil reserves of its own, it decided to make up for the loss by turning more massively to drugs. The trafficking increased in intensity with the arrival of the hawks in power, after the death in suspicious circumstances of President Turgut Özal in April 1993. According to the minister of interior, the war in Kurdistan had cost the Turkish exchequer upwards of $12.5 billion. According to the daily Hürriyet, Turkey’s heroin trafficking brought in $25 billion in 1995 and $37.5 billion in 1996...Only criminal networks working in close cooperation with the police and the army could possibly organize trafficking on such a scale. Drug barons have stated publicly, on Turkish television and in the West, that they have been working under the protection of the Turkish government and to its financial benefit. The traffickers themselves travel on diplomatic passports…the drugs are even transported by military helicopter from the Iranian border.” \n<<<\nNowhere is the pain of Turkey’s role in the heroin trade felt more horribly than in the United Kingdom. According to London’s Letter written by a Member of Parliament, “The war against drugs and drug trafficking in Britain is huge. Turkish heroin in particular is a top priority for the MI6 and the Foreign Ministry. During his visit to the British Embassy in Ankara, the head of the Foreign Office’s Turkey Department was clear about this. He reassured an English journalist that the heroin trade was more important than billions of pounds worth of trade capacity and weapons selling. When the journalist in question told me about this, I was reminded of my teacher’s words at university in Ankara ten years ago. He was also working for the Turkish Foreign Ministry. The topic of a lecture discussion was about Turkey’s Economy and I still remember his words today, “50 billion dollars worth of foreign debt is nothing, it is two lorry loads of heroin...”\n\n''Afghanistan: Top Opiate Producer and America’s Friend''\n\nBoth the DOS and the US Drug Enforcement Agency (DEA) described in detail the transit routes and countries involved in getting the goods to Turkey. Intelligence organizations here and abroad must have sanctioned the role that they, and Turkey and Afghanistan, played in the process.\n<<<\n “Afghanistan is the original source of most of the opiates reaching Turkey. Afghan opiates, and also hashish, are stockpiled at storage and staging areas in Pakistan, from where a ton or larger quantities are smuggled by overland vehicles to Turkey via Iran. Multi-ton quantities of opiates and hashish also are moved to coastal areas of Pakistan and Iran, where the drugs are loaded on ships waiting off-shore, which then smuggle the contraband to points in Turkey along the Mediterranean, Aegean, and/or Marmara seas. Opiates and hashish also are smuggled overland from Afghanistan via Turkmenistan, Azerbaijan, and Georgia to Turkey.\n\n Turkish-based traffickers and brokers operate directly and in conjunction with narcotic suppliers, smugglers, transporters, laboratory operators, drug distributors, money collectors, and money launderers in and outside Turkey. Traffickers in Turkey illegally acquire the precursor chemical acetic anhydride, which is used in the production of heroin, from sources in Western Europe, the Balkans, and Russia. During the 27-month period from July 1, 1999 to September 30, 2001, over 56 metric tons of illicit acetic anhydride were seized in or destined for Turkey.” \n<<<\n''The Ankara Pact''\n\nThe Middle East Report concluded in 1998 that probably the greatest strategic move in the Clinton post-Cold War years is what could be called "[[The Ankara Pact]]" -- an alliance between the U.S., Turkey, and Israel that essentially circumvents and bottles up the Arab countries. Earlier in 1997, Turkish Prime Minister Yilmaz visited with [[Bill Clinton]] to ensure him that Turkey would attempt to improve its human rights record by slaughtering less Kurds, but also mentioned that if the US pushed too hard on that subject or if the US Congress adopted an [[Armenian Genocide Resolution]], Turkey might award a billion dollar contract for attack helicopters to a Europe or maybe even Russia.\n\nDuring this timeframe, and with approval from the USA, Turkey began to let contracts to Israel to upgrade its F-4, F-5 and F-16 aircraft. Pemra Hazbay, writing in the May 2004 issue of //Peace Watch//, reported that total Israeli arms sales to Turkey had exceeded $1 billion since 2000. “In December 1996, Israel won a deal worth $630 million to upgrade Turkey's fleet of fifty-four F-4 Phantom fighter jets. In 1998, Turkey awarded a $75 million contract to upgrade its fleet of 48 F-5 fighter jets to Israel Aircraft Industries' Lahav division, beating out strong French competition. In 2002, Turkey ratified its largest military deal with Israel, a $700 million contract for the renovation of Turkish tanks.” But that pales in comparison to the $20 billion in US arms exports and military aid dealt to Turkey over the last 24 years.\n\nThen in 1999 came a news item from a publication known as the //Foreign Report// based in the United Kingdom. That publication indicated that “Israeli intelligence, the Mossad, had expanded its base in Turkey and opened branches in Turkey for other two departments stationed in Tel Aviv. The Mossad carried out several spy operations and plans through its elements stationed in Istanbul and Ankara, where it received support and full cooperation from the Turkish government. According to the military cooperation agreement between the Mossad and its Turkish counterpart, the MIT, signed by former Turkish Foreign Minister [[Hekmet Citen]] during his visit to Israel in 1993, the Mossad had provided Turkey with plans aiding it in closing its border with Iraq, as well as being involved in the arrest the chairman of the [[PKK]], [[Abdullah Ocalan]].” That agreement also included help with counter-narcotics.\n\nEarlier in 1998, Israeli, Turkish and American military forces engaged in exercises in the Mediterranean, according to Reuters and Agencie France Press. "[These exercises] signal to the radical states in the region that there is a strong alliance between Israel, Turkey and the United States which they must fear, Israeli political scientist Efraim Inbar said. Defense officials said during last month's visit to Ankara that they hoped the Jewish lobby in Washington would help Turkey offset Greek and Armenian influence on Capitol Hill. That's certainly part of this. They expect us to help them and we do help them a bit, said David Ivri, an adviser who directs biannual strategy talks with Turkey.” Reports also indicated that the CIA and Pentagon intelligence organizations had regularly chaired meetings of Turkish and Israeli officers in Tel Aviv for years.\n\n''DEA & FBI''\n\nPrior to the US invasion of Afghanistan, the [[DEA]] monitored the Afghanistan drug trade from its two offices in Pakistan: The [[Islamabad Country Office]] and the [[Peshawar Resident Office]]. In addition to Pakistan and Afghanistan, the DEA Islamabad Country Office also includes in its area of responsibility Uzbekistan, Kyrgyzstan, Kazakhstan, Tajikistan, the United Arab Emirates, and Oman. [[Asa Hutchinson]], the Administrator of the Drug Enforcement Administration, testified in October 2001 that DEA intelligence confirmed the presence of a linkage between Afghanistan’s ruling [[Taliban]] and international terrorist [[Osama bin Laden]].\n\nHe went on to say that although DEA had no direct evidence to confirm that Bin Laden is involved in the drug trade, the relationship between the Taliban and Bin Laden is believed to have flourished in large part due to the Taliban’s substantial reliance on the opium trade as a source of organizational revenue. “While the activities of the two entities do not always follow the same trajectory, we know that drugs and terror frequently share the common ground of geography, money, and violence. In this respect, the very sanctuary enjoyed by Bin Laden is based on the existence of the Taliban’s support for the drug trade. This connection defines the deadly, symbiotic relationship between the illicit drug trade and international terrorism.”\n\nMeanwhile, back at the FBI, the [[Office of International Operations]] oversees the [[Legal Attaché Program]] operating at 46 locations around the world. The operation maintains contact with [[Interpol]], other US federal agencies such as the [[CIA]] and military agencies such as the Defense Intelligence Agency, and foreign police and security officers. Its job is to investigate or counter threats from foreign intelligence, terrorists and criminal enterprises that threaten the national or economic security of the USA. It coordinates its activities with all US and foreign intelligence operations. In 2000, it opened offices in Ankara, Turkey and Almaty, Kazhakstan. Since 1996, it has had offices in Islamabad, Pakistan and Tele Aviv, Israel. In 1997 it opened one in Riyadh, Saudi Arabia. Combined, these offices monitor the entire Middle East, Persian Gulf and Central Asian threat areas developing thousands of “investigative leads”.\n\nMs Edmonds has given the American people leads that show that they are easily sacrificed for a perceived greater good.\n\n----\n\nJohn Stanton is a Virginia based writer specializing in national security and political issues. His forthcoming book is //America 2004: A Power But Not Super//. He is the author, along with Wayne Madsen, of //America’s Nightmare: The Presidency of George Bush II//. \nReach him at cioran123 AT yahoo DOT com\n\n----\n\n!Additional Reading\n\n*[[Why the CIA Went Astray over Italy's Abu Omar|http://cryptome.org/cia-astray.htm]] by Trowbridge H. Ford\n*[[Public Letter to 9/11 Commission Chairman from FBI Whistleblower|http://www.commondreams.org/views04/0802-06.htm]] by Sibel Edmonds\n*[[Sibel Edmonds’ 2005 Spring Offensive: FBI Shields Pakistan/Turkey Nuclear Weapons Development, Drug Trade, Cheney, Rumsfeld|http://cryptome.org/edmonds-2005.htm]] By John Stanton
<<reminder day:8 month:9 year:2006 title:"Consult the Oracle" >>
!Overview\n\nThe American-Turkish Council (ATC) was created in 1994 as the U.S.-based counterpart to the Turkish-U.S. Business Council, a “bilateral business council” that aims to foster commercial relations between the United States and Turkey. It grew out of the “consolidation of the Turkish desk of the U.S. Chamber [of Commerce] with the American Friends of Turkey.” (1, 2)\n\nAccording to its web site, “As one of the leading business associations in the United States, the American-Turkish Council (ATC) is dedicated to effectively strengthening U.S.-Turkish relations through the promotion of commercial, defense, technology, and cultural relations. Its diverse membership includes Fortune 500, U.S. and Turkish companies, multinationals, nonprofit organizations, and individuals with an interest in U.S.-Turkish relations. Guided by member interests, ATC strives to enhance the growing ties between the United States and Turkey by initiating and facilitating efforts to increase investment and trade between the two countries.” (2)\n\nAccording to its 2005 annual report, current ATC board members include [[Brent Scowcroft]], the board chairman and former national security adviser for George H. W. Bush; [[George Perlman]] of [[Lockheed Martin]]; [[Elizabeth Avery]] of [[Pepsico]]; [[Ozer Baysal]] of [[Pfizer]]; [[Andy Button]] of [[Boeing]]; [[Richard K. Douglas]] of [[General Electric]]; [[Sherry Grandjean]] of [[Sikorsky]]; [[John R. Miller]] of [[Raytheon]]; and [[Selig A. Taubenblatt]] of [[Bechtel]]. ATC's advisory board also includes representatives of a number of high-powered defense, pharmaceutical, consulting, and technology firms, including [[General Atomics]], [[United Defense]], [[Motorola]], and the [[Cohen Group]]. [[Daniel Pipes]] is a former ATC board member. (1, 4)\n\n!Highlights\n\nAfter years of maintaining a surprisingly low profile—given its purportedly influential position inside the beltway—the American-Turkish Council has in recent years been the subject of growing media scrutiny as a result of allegations made by FBI whistleblower [[Sibel Edmonds]] regarding suspect activities of council members. According to a September 2005 Vanity Fair article, Edmonds alleges that one of her [[FBI]] colleagues with close ties to the ATC routinely refused to translate conversations she was monitoring of close associates she had in the council. The FBI, which had been targeting members of the council as well as officials at the Turkish Consulate in Chicago as part of a counter-intelligence investigation, eventually fired Edmonds when she complained about her colleague's negligence, arguing that she was having a “disruptive effect” on their investigation. (5)\n\nDavid Rosen, author of the Vanity Fair piece, writes that some of the FBI wiretaps Edmonds had access to involved conversations among council members and Turkish officials about bribing elected officials and “ contained what sounded like references to large-scale drug shipments and other crimes.” One official who figured prominently in the conversations was Cong. [[Dennis Hastert]]. Rosen reports that FBI wiretap targets boasted “that they had a covert relationship with a very senior politician indeed—Dennis Hastert, Republican congressman from Illinois and Speaker of the House since 1999. The targets reportedly discussed giving Hastert tens of thousands of dollars in surreptitious payments in exchange for political favors and information.” Rosen points to Hastert's about-face in 2000 regarding the then-proposed House resolution calling for recognition of the [[Armenian genocide]] in Turkey, which was mentioned in the FBI-monitored conversations. After publicly backing the resolution, Hastert abruptly withdrew his support, arguing that President Clinton was concerned it would harm U.S. interests in Turkey.\n\nMore recently, in September 2005, another influential figure connected to ATC, former national security adviser Brent Scowcroft, stepped in to try to block a new congressional resolution on the Armenian genocide. Writing as “Chairman of the American-Turkish Council,” Scowcroft argued in a letter to Hastert: “//Whatever people individually decide on the merits of these resolutions, it is important to note the real world consequences of their adoption. When the French Senate passed such a resolution, it cost France over $1 billion in cancelled contracts and lost business opportunities. Enactment of genocide language would jeopardize our ability to achieve strategic interests with Turkey and in the region. Furthermore, it is quite likely that the business interests of several of our American members would be jeopardized by passage of such prejudicial legislation. The American-Turkish Council strongly believes that the events about which H. Con. Res. 195 and H. Res. 316 speak are matters for historians to decide—not politicians. Unfortunately, these resolutions express, as matters of law and fact, issues that remain widely disputed by scholars, historians, and legal experts.//” (6)\n\nSome writers argue that ATC is part of a U.S. effort to maintain a tight grip on the so-called New EuroAsia, a region that includes “the ‘Stans,' Ukraine, Chechnya, Azerbaijan, Georgia, Belarus, Romania, Bulgaria, Czech, Croatia, and Poland.” National security blogger [[John Stanton]], who daringly calls ATC one of the most powerful NGOs in the United States, argues that through groups like ATC, U.S. elites hope to ensure access to oil supplies and to markets for weapons and other products, reign in countries like Russia and Iran, and counter-balance the growing influence of the European Union. Pointing to the impressive corporate and policy elite membership of the ATC and similar associations (like the [[American-Azerbaijan Chamber of Commerce]]), Stanton claims, “Theirs is the voice that matters and is the one that is heard on television and radio networks through the mouths of news-readers, senators, congressmen, presidents, and military leaders. It is in and through such Associations that U.S. political, economic, and military policy is made and the American public subsequently ‘educated' to support policies that are not, and could not, be debated in public because of their illegality, audacity, complexity, and, arguably, necessity.” (7)\n\nOn the other hand, while ATC and its ilk may wield considerable influence through their extraordinary membership rolls, the voice of American elites is not as monolithic as Stanton and others imply. In ATC's case, for example, its head—Scowcroft—had been attacking, as early as 2002, the idea of going to war in Iraq. But his voice, in that case at least, was not the one that mattered. (8)\n\n!Funding\n\nATC is a member-funded organization. Corporate members who gave at least $9,500 (the “[[Golden Horn Club]]”) in 2004 include [[Bechtel]], [[Boeing]], [[BP]], [[ChevronTexaco]], [[Coca-Cola]], [[Frito Lay]], [[General Atomics]], [[General Dynamics]], [[GE]], [[Hyatt]], [[Lockheed Martin]], [[Motorola]], [[Northrop Grumman]], [[Pepsi]], [[Pfizer]], [[Raytheon]], [[Textron]], [[United Defense]], and [[United Technologies/Sikorsky]]. “Bosphorus” members, who pay an annual fee of at least $3,000, include [[Archer Daniels Midland]], [[BAE Systems]], [[Bank of America]], and the [[Cohen Group]]. “Marmara” members ($750 annual fee) include [[Delta Airlines]], [[ExxonMobil]], [[Halliburton]], [[Shell]], [[Turkish Airlines]], and [[Vestel Defense Industries]].\n\nATC also has a long list of non-corporate sponsors in its Marmara Club, including the [[American Enterprise Institute]], the [[America-Georgia Business Development Council]], the [[American-Uzbekistan Chamber of Commerce]], the [[Canadian-Turkish Business Council]], the [[Freer Gallery of Art]], the [[Smithsonian Institute]], [[Georgetown University]], the [[Jewish Institute for National Security Affairs]], the [[Brookings Institution]], the [[Eisenhower Institute]], the [[Nixon Center]], the [[U.S.-Algeria Business Council]], the [[U.S.-Azerbaijan Chamber of Commerce]], the [[U.S.-Greece Business Council]], the [[U.S.-Russia Business Council]], and the [[University of Chicago]]. (1)\n\n[[Right Web connections|http://rightweb.irc-online.org/profile/2874]]\n#[[American Enterprise Institute|http://rightweb.irc-online.org/org/aei.php]]\n#[[Jewish Institute for National Security Affairs|http://rightweb.irc-online.org/org/jinsa.php]]\n#[[Northrop Grumman|http://rightweb.irc-online.org/corp/northrop.php]]\n#[[Daniel Pipes|http://rightweb.irc-online.org/ind/pipes/pipes.php]]\n\n''Contact Information''\n\nAmerican-Turkish Council\n1111 14th Street NW\nWashington DC 20005\nPhone (202) 783-0483\nFax (202) 783-0511\nEmail atc@the-atc.org\nWeb - http://www.americanturkishcouncil.org/\n\n''Sources''\n\n1) American Turkish Council\nhttp://www.americanturkishcouncil.org/\n\n2) Turkish-U.S. Business Council\nhttp://www.turkey-now.net/?mID=1&pgID=20\n(Accessed on October 9, 2005)\n\n3) “American-Turkish Council,” Source Watch: A Project of the Center for Media and Democracy\nhttp://www.sourcewatch.org/index.php?title=American_Turkish_Council\n(Accessed on October 10, 2005)\n\n4) “Daniel Pipes: Prophet,” Lifestyles Magazine, June 2000\nhttp://www.danielpipes.org/article/98\n(Accessed on October 6, 2005)\n\n5) David Rose, “An Inconvenient Patriot,” Vanity Fair , September 2005\nhttp://www.vanityfair.com/commentary/content/articles/050919roco03\n\n6) September 9, 2005, letter from Brent Scowcroft to Denny Hastert criticizing proposed Armenian genocide resolution\nhttp://www.americanturkishcouncil.org/data/pdf/052109scowcroftlettertohastert.pdf\n\n7) John Stanton, “Inside the American Turkish Council,” SmirkingChimp.com\nhttp://www.smirkingchimp.com/article.php?sid=19921&mode=nested&order=0\n\n8) See, for example, “Washington Goes to War” by Jim Lobe, Foreign Policy In Focus , August 20, 2002\nhttp://www.fpif.org/commentary/2002/0208war.html\n(Accessed on October 11, 2005)
[[Welcome to your tiddlyspot.com site!]]\n\nThis notebook attempts to capture the essence of a [["kinkless" GTD system|http://www.kinkless.com]] using TiddlyWiki. It is using the <<gtdVersion>> version of the GTD plugins, by [[Tom Otvos|http://dcubed.ca/]], and is based on version <<version>> of the [[TiddlyWiki|http://www.tiddlywiki.com]] stand-alone wiki project, by Jeremy Ruston. For customization info, see [[GTD TiddlyWiki|http://groups.google.com/group/GTD-TiddlyWiki]] and [[TiddlyWikiDev|http://www.tiddlywiki.com/dev/]], and to customize the stylesheet see [[GTDTWStyleSheet]].\n\nHosting provided by [[TiddlySpot|http://tiddlyspot.com/]].
!Welcome to version 1.0.10 of d-cubed.\nThis is a hasty bug-fix release to the previous 1.0.9 version, with the following fixes:\n* fixed [[Action Review]] to once again show project-less actions\n* fixed GTDStyleSheet to have a smaller menu width for non-fancy styles (see below).\nBecause this release is hot on the heels of the 1.0.9 release, here are the notes for that (in case you are just arriving to the party).\n\n!Welcome to version 1.0.9 of d-cubed.\nIn this release, there are the following changes:\n* changed all action lists to allow direct access to associated projects and contexts\n* added optional "floating" parameter to {{{<<gtdAction>>}}} to support creating actions that don't have to be strictly "next" to show up in action lists, as in:\n{{{\n<<gtdAction actionTitle @context floating>>\n}}}\n* added support for single-click updates of the ~TiddlyWiki core in [[Check for Updates|UpdateApplication]]\n* fixed a bug that caused odd tiddler behaviour when editing a "reference" tiddler and the main Reference tiddler was open\n* changed the default style rules to the popular GTDTW+ style, using the new GTDTWStyleSheet; to use this style, please note that:\n** this stylesheet is loaded automatically (you do not need to edit the StyleSheet tiddler)\n** if you are updating your d-cubed installation and have a custom PageTemplate, you will need to edit your PageTemplate to have a gradient of #000 to #464646 for the full effect\n** if you want to revert to the plain d-cubed style, or have your own style variations, simply disable the "fancy" style from the [[Configuration Options]]\n\n!Please do the survey\nIf you have not already done so (and you are an active user of d-cubed), please take a moment to fill in a short [[user survey|http://www.surveymonkey.com/s.asp?u=626142022640]]. It will help me to craft future releases of d-cubed knowing what you think about it.\n\n//This tiddler will only open automatically the first time you run d-cubed after an update. After that, you can freely delete it, or save it for future reference.//
<<gtdActionList @>>
config.options.chkHttpReadOnly = false;\n
To make this system operate more efficiently, you should periodically archive completed projects and actions. When a project or action is archived, it is merely tagged in a special way to get it "out of sight", but all the information in the project and action tiddlers is preserved. This is important if you need to go back and find something. Click one of these buttons to view the current <<tag project-archive>> or <<tag action-archive>>.\n\n** Click <<gtdArchive archive>> if you would like to archive all completed projects and actions now.\n** Click <<gtdArchive unarchive>> if you would like to unarchive all previously archived projects and actions now.\n\nIf you are sure that you do not want to retain archived projects and actions, you can purge them completely from the system. //Once these archived items are removed, the only way they can be put back in is through manual importing or copy/paste.// ''For your safety, your file will be saved and a backup file will be automatically generated before an archive purge is performed.''\n\n** Click <<gtdArchive purge>> if you would like to purge your archive now.
/***\n|Name|BetterTimelineMacro|\n|Created by|SaqImtiaz|\n|Location|http://lewcid.googlepages.com/lewcid.html#BetterTimelineMacro|\n|Version|0.5 beta|\n|Requires|~TW2.x|\n!!!Description:\nA replacement for the core timeline macro that offers more features:\n*list tiddlers with only specfic tag\n*exclude tiddlers with a particular tag\n*limit entries to any number of days, for example one week\n*specify a start date for the timeline, only tiddlers after that date will be listed.\n\n!!!Installation:\nCopy the contents of this tiddler to your TW, tag with systemConfig, save and reload your TW.\nEdit the ViewTemplate to add the fullscreen command to the toolbar.\n\n!!!Syntax:\n{{{<<timeline better:true>>}}}\n''the param better:true enables the advanced features, without it you will get the old timeline behaviour.''\n\nadditonal params:\n(use only the ones you want)\n{{{<<timeline better:true onlyTag:Tag1 excludeTag:Tag2 sortBy:modified/created firstDay:YYYYMMDD maxDays:7 maxEntries:30>>}}}\n\n''explanation of syntax:''\nonlyTag: only tiddlers with this tag will be listed. Default is to list all tiddlers.\nexcludeTag: tiddlers with this tag will not be listed.\nsortBy: sort tiddlers by date modified or date created. Possible values are modified or created.\nfirstDay: useful for starting timeline from a specific date. Example: 20060701 for 1st of July, 2006\nmaxDays: limits timeline to include only tiddlers from the specified number of days. If you use a value of 7 for example, only tiddlers from the last 7 days will be listed.\nmaxEntries: limit the total number of entries in the timeline.\n\n\n!!!History:\n*28-07-06: ver 0.5 beta, first release\n\n!!!Code\n***/\n//{{{\n// Return the tiddlers as a sorted array\nTiddlyWiki.prototype.getTiddlers = function(field,excludeTag,includeTag)\n{\n var results = [];\n this.forEachTiddler(function(title,tiddler)\n {\n if(excludeTag == undefined || tiddler.tags.find(excludeTag) == null)\n if(includeTag == undefined || tiddler.tags.find(includeTag)!=null)\n results.push(tiddler);\n });\n if(field)\n results.sort(function (a,b) {if(a[field] == b[field]) return(0); else return (a[field] < b[field]) ? -1 : +1; });\n return results;\n}\n\n\n\n//this function by Udo\nfunction getParam(params, name, defaultValue)\n{\n if (!params)\n return defaultValue;\n var p = params[0][name];\n return p ? p[0] : defaultValue;\n}\n\nwindow.old_timeline_handler= config.macros.timeline.handler;\nconfig.macros.timeline.handler = function(place,macroName,params,wikifier,paramString,tiddler)\n{\n var args = paramString.parseParams("list",null,true);\n var betterMode = getParam(args, "better", "false");\n if (betterMode == 'true')\n {\n var sortBy = getParam(args,"sortBy","modified");\n var excludeTag = getParam(args,"excludeTag",undefined);\n var includeTag = getParam(args,"onlyTag",undefined);\n var tiddlers = store.getTiddlers(sortBy,excludeTag,includeTag);\n var firstDayParam = getParam(args,"firstDay",undefined);\n var firstDay = (firstDayParam!=undefined)? firstDayParam: "00010101";\n var lastDay = "";\n var field= sortBy;\n var maxDaysParam = getParam(args,"maxDays",undefined);\n var maxDays = (maxDaysParam!=undefined)? maxDaysParam*24*60*60*1000: (new Date()).getTime() ;\n var maxEntries = getParam(args,"maxEntries",undefined);\n var last = (maxEntries!=undefined) ? tiddlers.length-Math.min(tiddlers.length,parseInt(maxEntries)) : 0;\n for(var t=tiddlers.length-1; t>=last; t--)\n {\n var tiddler = tiddlers[t];\n var theDay = tiddler[field].convertToLocalYYYYMMDDHHMM().substr(0,8);\n if ((theDay>=firstDay)&& (tiddler[field].getTime()> (new Date()).getTime() - maxDays))\n {\n if(theDay != lastDay)\n {\n var theDateList = document.createElement("ul");\n place.appendChild(theDateList);\n createTiddlyElement(theDateList,"li",null,"listTitle",tiddler[field].formatString(this.dateFormat));\n lastDay = theDay;\n }\n var theDateListItem = createTiddlyElement(theDateList,"li",null,"listLink",null);\n theDateListItem.appendChild(createTiddlyLink(place,tiddler.title,true));\n }\n }\n }\n\n else\n {\n window.old_timeline_handler.apply(this,arguments);\n }\n}\n//}}}
*1918\n[[Prescott Bush]] Sr., leads a raid on a Indian tomb to secure Geronimo's skull for [[Skull & Bones]].\n\n*1919\n[[George Herbert Walker]] forms WA Harriman & Co. with Averell Harriman as chairman\n\n*1924\n[[WA Harriman]] establishes [[Union Banking Corp.]] in partnership with the German industrialist [[Fritz Thyssen]], who will be a major donor to the Nazi Party.\n\n*1937\nPrescott Bush's investment firm sets up deal for the Luftwaffe so it can obtain tetraethyl lead.\n\n*1940s\n[[GUARDIAN|http://www.guardian.co.uk/usa/story/0%2C12271%2C1312540%2C00.html]] - George Bush's grandfather, the late US senator Prescott Bush, was a director and shareholder of companies that profited from their involvement with the financial backers of Nazi Germany. The Guardian has obtained confirmation from newly discovered files in the US National Archives that a firm of which Prescott Bush was a director was involved with the financial architects of Nazism. His business dealings . . continued until his company's assets were seized in 1942 under the [[Trading with the Enemy Act]]. The evidence has also prompted one former US Nazi war crimes prosecutor to argue that the late senator's action should have been grounds for prosecution for giving aid and comfort to the enemy. . .\n\nThe new documents . . show that even after America had entered the war and when there was already significant information about the Nazis' plans and policies, he worked for and profited from companies closely involved with the very German businesses that financed Hitler's rise to power. It has also been suggested that the money he made from these dealings helped to establish the Bush family fortune and set up its political dynasty. . .\n\nWhile there is no suggestion that Prescott Bush was sympathetic to the Nazi cause, the documents reveal that the firm he worked for, [[Brown Brothers Harriman]], acted as a US base for the German industrialist, Fritz Thyssen, who helped finance [[Adolf Hitler]] in the 1930s before falling out with him at the end of the decade. The Guardian has seen evidence that shows Prescott Bush was the director of the New York-based [[Union Banking Corporation]] that represented Thyssen's US interests and he continued to work for the bank after America entered the war.\n\nNEWSWEEK [POLISH EDITION] - Prescott Sheldon Bush, grandfather of George Walker Bush, had financial dealings during World War II with the Nazis, amassing a family fortune as a banker. Prescott Bush was a shareholder of the company Union Banking Corporation, working with industrialist Fritz Thyssen from the [[Nazistowskiego Silesian Consolidated Steel Corporation]], where [[Auschwitz]] prisoners worked.\n\nNEW STATESMAN, APRIL 15, 2002 - In 1926, [[Averell Harriman]] welcomed a familiar name into his Wall Street firm (W A Harriman and Co) as senior partner - Prescott Bush, father to one American president and grandfather to another. The association was to end simultaneously in fabulous wealth and temporary ignominy - at the height of the Second World War, in 1942, the New York Herald Tribune reported that the Union Banking Corporation, of which Prescott Bush was a director and [[E. Roland Harriman]] a 99 per cent shareholder, was holding a small fortune under the orders of Adolf Hitler's financier. Under the Trading with the Enemy Act, all of Union Banking Corporation's capital stock was seized.\n\nOn October 20, 1942, the U.S. government had had enough of Prescott Bush and his Nazi business arrangements with Thyssen. Over the summer, The New York Tribune had exposed Bush and Thyssen, whom the Tribune dubbed "Hitler's Angel." When the US government saw UBC's books, they found out that Bush's bank and its shareholders "are held for the benefit of ... members of the Thyssen family, [and] is property of nationals ... of a designated enemy country." . . .\n\nOn November 17, 1942, The US government also took over the [[Silesian American Corporation]], but did not prosecute Bush . . . The companies were allowed to operate within the Government Alien Property custodian office with a catch - no aiding the Nazis. In 1943, while still owning his stock, Prescott Bush resigned from UBC and even helped raise money for dozens of war-related causes as chairman of the [[National War Fund]].\n\nAfter the war, the Dutch government began investigating the whereabouts of some jewelry of the Dutch royal family that was stolen by the Nazis. They started looking into books of the [[Bank voor Handel en Scheepvaart]]. When they discovered the transaction papers of the Silesian American Corporation, they began asking the bank manager [[H.J. Kounhoven]] a lot of questions. Kouwenhoven was shocked at the discovery and soon traveled to New York to inform Prescott Bush. According to Dutch intelligence, Kouwenhoven met with Prescott soon after Christmas, 1947. Two weeks later, Kouwenhoven apparently died of a heart attack.\n\nBy 1948, Fritz Thyssen's life was in ruins. After being jailed by the Nazis, he was jailed by the Allies and interrogated extensively, but not completely, by US investigators. Thyssen and Flick were ordered to pay reparations and served time in prison for their atrocious crimes against humanity. . .\n\nWhen Thyssen died, the Alien Property Custodian released the assets of the Union Banking Corporation to Brown Brothers Harriman. The remaining stockholders cashed in their stocks and quietly liquidated the rest of UBC's blood money.\n\nPrescott Bush received $1.5 million for his share in UBC. That money enabled Bush to help his son, [[George H. W. Bush]], to set up his first royalty firm, [[Overby Development Company]], that same year. It was also helpful when Prescott Bush left the business world to enter the public arena in 1952 with a successful senatorial campaign in Connecticut. On October 8th, 1972, Prescott Bush died of cancer and his will was enacted soon after.\n\nIn 1980, when George H.W. Bush was elected vice president, he placed his father's family inherence in a blind trust. The trust was managed by his old friend and quail hunting partner, [[William Stamps Farish III]]. Bush's choice of Farish to manage the family wealth is quite revealing in that it demonstrates that the former president might know exactly where some of his inheritance originated. Farish's grandfather, [[William Farish Jr.]], on March 25th, 1942, pleaded "no contest" to conspiring with Nazi Germany while president of [[Standard Oil]] in New Jersey. He was described by Senator [[Harry Truman]] in public of approaching "treason" for profiting off the Nazi war machine. Standard Oil, invested millions in [[IG Farben]], who opened a gasoline factory within Auschwitz in 1940. The billions "Stamps" inherited had more blood on it then Bush, so the paper trail of UBC stock would be safe during his 12 years in presidential politics.\n\nIt has been 60 years since one of the great money laundering scandals of the 20th century ended and only now are we beginning to see the true historical aspects of this important period of world history, a history that the remaining Holocaust survivors beg humanity to "never forget." [Investigative journalist John] Loftus believes history will view Prescott Bush as harshly as Thyssen. "It is bad enough that the Bush family helped raise the money for Thyssen to give Hitler his start in the 1920s, but giving aid and comfort to the enemy in time of war is treason. The Bush bank helped the Thyssens make the Nazi steel that killed Allied solders. As bad as financing the Nazi war machine may seem, aiding and abetting the Holocaust was worse. Thyssen's coal mines used Jewish slaves as if they were disposable chemicals. There are six million skeletons in the Thyssen family closet, and a myriad of criminal and historical questions to be answered about the Bush family's complicity."\n\nJOHN BUCHANAN, NEW HAMPSHIRE GAZETTE - After 60 years of inattention and even denial by the U.S. media, newly-uncovered government documents in The National Archives and Library of Congress reveal that Prescott Bush, the grandfather of President George W. Bush, served as a business partner of and U.S. banking operative for the financial architect of the Nazi war machine from 1926 until 1942, when Congress took aggressive action against Bush and his "enemy national" partners.\n\nThe documents also show that Bush and his colleagues, according to reports from the U.S. Department of the Treasury and FBI, tried to conceal their financial alliance with German industrialist Fritz Thyssen, a steel and coal baron who, beginning in the mid-1920s, personally funded Adolf Hitler's rise to power by the subversion of democratic principle and German law.\n\nFurthermore, the declassified records demonstrate that Bush and his associates, who included E. Roland Harriman, younger brother of American icon W. Averell Harriman, and George Herbert Walker, President Bush's maternal great-grandfather, continued their dealings with the German industrial baron for nearly eight months after the U.S. entered the war.\n\n. . . The mainstream media have apparently made no attempt since World War II to either verify or disprove the allegations of Nazi collaboration against the Bush family. Instead, they have attempted to dismiss or discredit such Internet sites or "unauthorized" books without any journalistic inquiry or research into their veracity.\n\nThe National Review ran an essay on September 1 by their White House correspondent Byron York, entitled "Annals of Bush-Hating." It begins mockingly: "Are you aware of the murderous history of George W. Bush - indeed, of the entire Bush family? Are you aware of the president's Nazi sympathies? His crimes against humanity? And do you know, by the way, that George W. Bush is a certifiable moron?" York goes on to discredit the "Bush is a moron" IQ hoax, but fails to disprove the Nazi connection.\n\nThe more liberal Boston Globe ran a column September 29 by Reason magazine's Cathy Young in which she referred to "Bush-o-phobes on the Internet" who "repeat preposterous claims about the Bush family's alleged Nazi connections."\n\n. . . Major U.S. media outlets, including ABC News, NBC News, The New York Times, Washington Post, Washington Times, Los Angeles Times and Miami Herald, have repeatedly declined to investigate the story when information regarding discovery of the documents was presented to them beginning Friday, August 29\n\nSARASOTA HERALD-TRIBUNE: The president of the Florida Holocaust Museum said Saturday that George W. Bush's grandfather derived a portion of his personal fortune through his affiliation with a Nazi-controlled bank. [[John Loftus]], a former prosecutor in the Justice Department's Nazi War Crimes Unit, said his research found that Bush's grandfather, Prescott Bush, was a principal in the Union Banking Corp. in Manhattan in the late 1930s and the 1940s. Leading Nazi industrialists secretly owned the bank at that time, Loftus said, and were moving money into it through a second bank in Holland even after the United States declared war on Germany. The bank was liquidated in 1951, Loftus said, and Bush's grandfather and great-grandfather received $1.5 million from the bank as part of that dissolution . . . Loftus pointed out that the Bush family would not be the only American political dynasty to have ties to the "wrong side of World War II." The Rockefellers had financial connections to Nazi Germany, he said. Loftus also reminded his audience that John F. Kennedy's father, an avowed isolationist and former ambassador to Great Britain, profited during the 1930s and '40s from Nazi stocks that he owned. "No one today blames the Democrats because Jack Kennedy's father bought Nazi stocks," Loftus said. Still, he said, it is important to understand these historical connections for what they tell us about politics today. The World War II experience points out how easy it was then -- and remains today -- to hide money in multinational funds. SARASOTA HERALD TRIBUNE\n\n*1950s\n'WE WERE TERRIBLE TO ANIMALS,' recalled [Bush childhood pal] [[Terry Throckmorton]], laughing. A dip behind the Bush borne turned into a small lake after a good rain, and thousands of frogs would come out. `Everybody would get BB guns and shoot them,' Throckmorton said. `Or we'd put firecrackers in the frogs and throw them and blow them up.'- [[Nicholas D. Kristof]], Midland Life\n\n*1953\nGeorge Bush and the [[Liedtke]] brothers form [[Zapata Petroleum]]. Zapata's subsidiary, [[Zapata Offshore]], later becomes known for its close ties to the CIA.\n\n*1954\nThe Bush family buys out the Liedtke brothers.\n\n*1955\nGeorge Bush sets up a Mexican drilling operation, [[Permago]], with a frontman to obscure his ownership. The frontman later is convicted of defrauding the Mexican government of $58 million.\n\n*1959\n[[Manuel Noriega]] recruited as an agent by the US Defense Intelligence Agency ([[DIA]]).\n\n*1960s\nKitty Kelley writes that George H. W. Bush successfully comes to the rescue when son Jeb violates Andover's alcohol ban, but he's allowed to finish his degree after his father intervenes. Dad later gets an honorary transfer for son [[Marvin Bush]] after he is found with drugs.\n\nAfter his sister dies, young George writes a school paper in which he says "the lacerates ran down my cheeks." He also has a confederate flag hanging in his dorm room.\n\n*1960\nSome investigators believe George Bush spent part of this year and the next in Miami on behalf of the CIA, organizing rightwing exiles for an invasion of Cuba. Is said to have worked with later [[Iran-Contra]] figure [[Felix Rodriguez]].\n\n*1961\nAccording to the Realist, CIA official [[Fletcher Prouty]] delivers three Navy ships to agents in Guatemala to be used in the [[Bay of Pigs]] invasion. Prouty claims he delivered the ships to a CIA agent named George Bush. Agent Bush named the ships the Barbara, Houston and Zapata.\n\n[[Bay of Pigs]] invasion fails. Right-wingers blame [[John F. Kennedy]] for failure to provide air cover. CIA loses 15 men, another 1100 are imprisoned.\n\nGeorge Bush invites Rep. T. L. Ashley -- a fellow Skull & Bonesman -- down to Texas for a party in order to meet "an attractive girl." Bush writes that "she may be accompanied by an Austrian ski instructor but I think we can probably flush him at the local dance hall." Bush notes that he's had to unlist his phone because "Jane Morgan keeps calling me all the time." [From a letter in the Ashley archives uncovered by Spy magazine.]\n\nZapata annual report boasts that the company has ''paid no taxes'' since it was founded.\n\n*1963\n[[John F. Kennedy]] is assassinated. Internal FBI memo reports that on November 22 "reputable businessman" [[George H. W. Bush]] reported hearsay that a certain Young Republican "has been talking of killing the president when he comes to Houston." The Young Republican was nowhere near Dallas on that date. When CIA director, Bush will request many of the Kennedy assasination files.\n\nAccording to a 1988 story in The Nation, a memo from [[J. Edgar Hoover]] states that "Mr. George Bush of the CIA" had been briefed on November 23rd, 1963 about the reaction of anti-Castro Cuban exiles in Miami to the assassination of President Kennedy. George says it ain't him, admits he was in Texas but can't remember where.\n\n*1964\nGeorge H. W. Bush runs as a Goldwater Republican for Congress. Campaigns against the [[Civil Rights Act]].\n\n*1966\nGeorge H. W. Bush, runs as a moderate Republican, gets elected to Congress. [[Robert Mosbacher]] chairs [[Oil Men for Bush]].\n\nApache leader Ned Anderson meets with the Skull & Bones lawyer and George Bush's brother Jonathan who attempt to return the skull Prescott Bush had looted in 1933. Anderson refuses the skull because he says it isn't Geronimo's.\n\n*1967\nRICHARD GOODING, STAR WEEKLY, July 27, 1999 - Presidential candidate George W. Bush once led a Yale fraternity that barbarically branded its new members on their backsides with a red-hot metal rod as part of a sadistic hazing practice. "I got branded and I didn't like it one bit," Professor Bradford Lee of the elite Naval War College in Newport, R.I.-an ex-football player and onetime member of Bush's Delta Epsilon Kappa fraternity-told STAR in an exclusive interview. "It did burn," he says, recalling the terrifying experience. "I think I still have the mark on me."\n\nA Star investigation has revealed that he was president of [[Delta Epsilon Kappa]] when the hazing scandal broke in the campus newspaper in the late '60s-leading to the fraternity being fined and the branding practice halted. Amazingly, Bush, now the governor of Texas, defended the illegal [[torture]] of the young fraternity pledges at the time as a harmless prank-insisting that it was comparable to "only a cigarette burn" which left "no scarring mark physically or mentally." But others said the branding resulted in a second-degree burn that left a half-inch scab in the shape of the Greek letter Delta.\n\n[[Bradford Lee]] - who still bears the mark 32 years later - is not sure who actually wielded the brand because the pledges were not allowed to look at their tormentors. "But I do know that George Bush was very active in all the fraternity activities then."\n\nLee, who was a guard on the Yale football team, recalled that the branding came after "a long initiation that went on into the early morning hours." He says the idea was to wear you out so much that you allowed your bare flesh to be singed. "I was already tired from football practice earlier that day. I was so groggy I wasn't exactly sensitive to what they were up to. I wasn't very happy about it."\n\n. . . [[Bill Katz]], now a community college teacher in northern New Jersey, told Star that the branding was done with "a wire coat hanger twisted into a triangle and heated up" in the fireplace. "They touched you just above the buttocks, in the small of the back," he says.\n\n. . . And Boston lawyer [[Franklin Levy]] said that to increase the fear of the moment, the older fraternity men first brandished an actual glowing hot branding iron-to make them think that was what awaited them. "When they burned me," Levy remembers, "I jumped a mile."\n\nBefore the brandings, pledges had to endure hours of being kicked and a vicious round of tannings with wooden paddles-another practice that Yale has ruled taboo. "On that night," according to an account in the Yale Daily News in 1967, 'each pledge was forced to sit with his head between his legs, motionless, for two to five hours.\n\n"If he coughed, raised his hand or talked, he was kicked by an older brother." After all the beatings, recalled one fraternity member, the branding was almost a relief.\n\nIn the wake of the Yale Daily News' expose of the fraternity's hazing, Bush, whose father was also a DKE at Yale, admitted the branding to the New York Times in November 1967. But Bush - whose college nickname was "Lip" for his Texas wisecracks - also ripped into Yale for being too "Haughty" to "allow this type of pledging to go on."\n\n*1968\n[[George W. Bush]] joins Skull & Bones at Yale\n\n*1970s\nA professor at the Harvard Business School shows his students the film, "Grapes of Wrath." Student George W wants to know, "Why are you going to show us that Commie movie?" His review of the movie: "Look. People are poor because they are lazy."\n\n*1970\nBush loses Senate race to [[Lloyd Bentsen]], despite $112,000 in contributions from a White House slush fund. [[James Baker III]] is campaign chair. Bush later claims to have reported correctly all but $6000 in cash --which he denies he got. A 1992 story in the New York Times says the $6000 was listed in records of [[Richard Nixon]]'s "townhouse operation" which was designed in part to make GOP congressional candidates vulnerable to blackmail.\n\n*1971\nBush is named UN Ambassador by Nixon.\n\nBureau of Narcotics and Dangerous Drugs finds enough evidence of Noriega's involvement in drug dealing to indict him, but US Attorney's office in Miami considers grabbing Noriega in Panama for trial here to be impractical. State Department also urges BNDD to back off.\n\n*1972\n[[Bill Liedtke]] gathers $700,000 in anonymous contributions for the Nixon campaign, delivering the money in cash, checks and securities to the Committee to Re-Elect the President (the infamous CREEP) one day before such contributions become illegal. Bill says he did it as a favor to George.\n\n*1973\nBush is named GOP national chair. Brings into the party the [[Heritage Groups Council]], an organization with a number of Nazi sympathizers.\n\nBush, according to Lowell Weicker, inquires as to whether records of the "townhouse operation" should be burned.\n\n[[Robert Mosbacher]] wins an offshore drilling concession from Philippine dictator [[Ferdinand Marcos]].\n\nWatergate tapes indicate concern by Nixon and aide [[H. R. Haldeman]] that the investigation into [[Watergate]] might expose the "[[Bay of Pigs]] thing." Nixon also speaks of the "Texans" and the "Cubans." and mentions "Mosbacher."\n\nIn another tape, Nixon decides following his re-election to get signed resignations from his whole government so he can centralize his power. Says Nixon to [[John Erlichman]]: "Eliminate everyone, except George Bush. Bush will do anything for our cause."\n\n*1974\nBush is named special envoy to China.\n\n*1975\nDEA report notes Manuel Noreiga's involvement in drug trade.\n\nGeorge W. Bush graduates from Harvard Business School\n\n*1976\n[[Gerald Ford]] names George Bush CIA director, his fourth political patronage job in a little over five years. Bush later claims this is the first time he ever worked for the CIA. At his confirmation hearings, Bush says, "I think we should tread very carefully on governments that are constitutionally elected."\n\nBush holds first known meeting with [[Manuel Noriega]]. Noriega starts receiving $110,000 a year from the CIA.\n\nManuel Noriega found to be working for Cubans as well, but keeps his CIA gig.\n\nBush sets up Team B within the CIA, a group of neo-conservative outsiders and generals who proceed to double the agency's estimate of Soviet military spending.\n\nSenate committee headed by [[Frank Church]] proposes revealing size of the country's black budget -- intelligence spending that, in contradiction to the Constitution, is kept secret even from the Hill. According to journalist Tim Weiner, Bush argues that the revelation would be a disaster and would compromise the agency beyond repair. By a one vote margin the matter is referred to the Senate. It never reaches the floor.\n\nChilean dissident [[Orlando Letelier]] is assassinated by Chilean secret police agents. CIA fails to inform FBI of pending plot and of assassins' arrival in US. CIA claims the hit was the work of left-wingers in search of a martyr.\n\n[[Operation Condor]]\n\nBush writes internal CIA memo asking to see cable on [[Jack Ruby]] visiting [[Santos Trafficante]] in jail. In 1992, Bush will deny any interest in the JFK assassination while CIA head.\n\nBush claims nuclear war is winnable.\n\n*1977\nPhilippine dictator Ferdinand Marcos buys back Robert Mosbacher's oil concession. Mosbacher claims he was swindled. Philippine officials say they never saw any expenditures by Mosbacher on the project.\n\n*1978\nBush, Mosbacher and James Baker III become partners in an oil deal.\n\nFrom a Washington Post article by [[Bob Woodward]] and [[Walter Pincus]] : "According to those involved in Bush's first political action committee, there were several occasions in 1978-79, when Bush was living in Houston and traveling the country in his first run for the presidency, that he set aside periods of up to 24 hours and told aides that he had to fly to Washington for a secret meeting of former CIA directors. Bush told his aides that he could not divulge his whereabouts, and that he would not be available." Former CIA chief [[Stansfield Turner]] denies such meetings took place.\n\nGeorge W. Bush declares his candidacy for the Midland Congressional district. He wins the Republican primary and loses in the general election.\n\nGeorge W. Bush begins operations of his oil firm, [[Arbusto]] Energy. With the help of [[Jonathan Bush]], he assembles several dozen investors in a limited partnership including [[Dorothy Bush]], [[Lewis Lehrman]], [[William Draper]], and [[James Bath]], a Houston aircraft broker\n\n*1979\nFifty Bush family investors and friends, led by uncle Jonathan, a New York Republican Party official and an investment manager, invest $4.7 million to set up young Bush in a company called [[Arbusto]].\n\n*1980\nBush runs for the presidency after agreeing to prospective manager James Baker's condition that mistress and aide [[Jennifer Fitzgerald]] can't be around, according to journalist Kitty Kelly.\n\nBush becomes [[Ronald Reagan]]'s vice presidential candidate. \n\nMosbacher becomes chief fundraiser for Bush's presidential campaign. Forms a millionaire's club of 250 contributors, each of whom cough up $100,000.\n\n[[William Casey]] forms a working group to prepare for possible Carter October political surprise. In early October, an Iranian official meets with three top Reagan campaign aides. All three deny memory of the meeting in subsequent proceedings.\n\nOn October 21, Reagan hints he has a secret plan to release the hostages. This is right around the alleged date of a Paris meeting at which the so-called "[[October Surprise]]" was settled. Some allege that at this meeting it was agreed to end the arms embargo against Iran if Iran would release its hostages after the election. While Bush's presence at this meeting has been denied by the House committee investigating the October Surprise, Bush's whereabouts at this critical time remain in doubt. The White House, in fact, has leaked conflicting stories.\n\nPrescott Bush writes a letter to James Baker III in September which says, "[[Herb Cohen]] - the buy that offered help on the Iranian hostage situation - called me yesterday afternoon. Herb has a couple of reliable sources on the National Security Council ([[NSC]]), about whom the [Carter] administration does not know, who can keep him posted on developments."\n\nRep. [[Dan Quayle]] goes on a Florida golfing vacation with seven other men and Paula Parkinson -- an insurance lobbyist who later posed nude for Playboy. Parkinson describes Quayle as a husband on the make, but says she turned him down because she was already having an affair with another congressman. Marilyn Quayle says, "anybody who knows Dan Quayle knows he would rather play golf than have sex."\n\nThe Reagan-Bush campaign receives stolen copies of Carter's briefing books.\n\nBush's campaign manager, [[James Baker III]], forces the dismissal of Bush aide Jennifer Fitzgerald, described in a 1982 Time story as having "much to say about where Bush goes, what he does and whom he sees." Bush continues to pay Fitzgerald out of his own pocket.\n\n*1981\nReagan-Bush inaugurated. Hostages released moments before. Shortly thereafter, arms shipments to Iran resume from Israel and America. In July, an Argentinean plane chartered by Israel crashes in Soviet territory. It is found to have made three deliveries of American military supplies to Iran. In a 1991 story in //Esquire//, Craig Unger quotes [[Alexander Haig]] as saying "I have a sneaking suspicion that someone in the White House winked." Says Unger: "This secret and illegal sale of military equipment continued for years afterwards."\n\nJames Baker III named Reagan's chief of staff.\n\nSEC filings for Zapata Oil for 1960-66 are found to have been "inadvertently destroyed."\n\nReagan authorizes CIA assistance to Contras.\n\n*1982\nCIA director [[William Casey]] begins [[Operation Black Eagle]] to expand US role in Central America. Urges use of "selected Latin American and European governments, organizations and individuals" in the project.\n\n[[Inslaw]], a computer software company, signs a $10 million contract to install a case-tracking program in 94 US Attorney's offices. Four months later, after obtaining a copy of Inslaw's proprietary version of the program, the government cancels the contract and begins an aggressive campaign to force the company into bankruptcy. Later sources claim that the program was installed by the CIA and sold to various foreign intelligence agencies.\n\nAfter $3 million is poured into [[Arbusto]] with little oil and no profits, just tax shelter George W. Bush changes the company name to [[Bush Exploration Oil Co.]] Subsequently he is kept afloat by an investment from [[Philip Uzielli]], a Princeton friend of [[James Baker III]]. For the sum of $1 million, Uzielli bought 10% of the company at a time in 1982 when the entire enterprise was valued at less than $400,000. Subsequently, to save the company George W. Bush merges Arbusto with [[Spectrum 7]], a small oil firm owned by [[William DeWitt]] and [[Mercer Reynolds]]. DeWitt had graduated from Yale a few years earlier than Bush and was the son of the former owner of the Cincinnati Reds. Bush becomes president of Spectrum 7. He also gets 14% of the Spectrum's stock. Meanwhile, 50 original investors in Arbusto get paid off at about 20 cents on the dollar.\n\nPrescott Bush Jr.'s campaign for senator from Connecticut goes down hill after he tells a woman's club: "I'm sure there are people in Greenwich who are glad [the immigrants] are here, because they wouldn't have someone to help in the house without them."\n\n*1983\nManuel Noriega meets again with George Bush.\n\nBush presents an autographed photo to a WWII Ukrainian leader under the Nazis, whose regime killed 100,000 Jews.\n\n[[Korean Airlines 007]] crashes under circumstances that remain suspicious to this day.\n\nBush promotes [[Jennifer Fitzgerald]] from appointments secretary to executive assistant. Seven staffers resign in protest. Fitzgerald tells the New York Post: "Everyone keeps painting me as this old ogre. I really don't worry about it. All these bizarre things just simply aren't true."\n\n[[Neil Bush]] forms his first oil company. He puts in $100, his partners contribute $160,000 and Neil is named president of the firm, [[JNB Exploration]].\n\nJeb Bush's business partner, [[Alberto Duque]], goes bankrupt, is eventually convicted of fraud and is sentenced to 15 years in prison.\n\n*1984\n[[Jeb Bush]] lobbies the Department of Health & Human Services on behalf of Cuban--American businessman [[Miguel Recarey, Jr.]], whose medical firm, IMC, later collapses. Recarey, who was close to mobster [[Santos Trafficante]] and the Contras, later disappears with at least $12 million in federal funds.\n\nGeorge Bush takes part in meetings to plan increased "third country" aid to the Contras.\n\nCIA mines Nicaraguan harbors.\n\n[[Spectrum 7]] Corporation, an Ohio oil exploration outfit owned by Dubya's Yalie pal [[William DeWitt]] Jr., buys out Bush Exploration, setting up young Bush as CEO at $75,000 a year and giving him 1.1 million shares of the firm's stock. The company's fortunes soon sink, with $400,000 in losses and a debt of $3 million.\n\n*1985\nJennifer Fitzgerald is sent to work on Capitol Hill after stories arise linking her romantically with George Bush.\n\n[[Stuart Spencer]]'s public relation firm starts receiving over $350,000 from Panama to improve Noriega's image.\n\nCIA starts using [[BCCI]] as a conduit.\n\nGeorge Bush thanks [[Oliver North]] for "dedication and tireless work with the hostage thing, with Central America." Bush will later deny knowing about the Contra effort until late 1986.\n\nNeil Bush joins the board of [[Silverado S&L]], serves until 1988. Silverado loans his partners in JNB $132 million which they never repay. Silverado will eventually collapse at a taxpayer cost of $1 billion.\n\n408 TOW anti-tank missiles are shipped from Israel to Iran. A day later, US hostage [[Benjamin Weir]] is released.\n\n*1986\nVP Bush goes to Honduras to promote support for the Contras. Takes along baseball players [[Nolan Ryan]] and [[Gary Carter]].\n\nContra figure [[Felix Rodriguez]] meets with [[Donald Gregg]], Bush's national security advisor, to complain about [[Iran-Contra]] operatives skimming funds from the Contras.\n\nBush may have made several secret visits to Damascus between 1986-88 according to a 1992 report in Time, which said two senior GOP senators were pressing for a probe. The allegation is that Bush went to negotiate the release of hostages in Lebanon but in fact stonewalled Syria, "playing for campaign timing. Republicans want to get to the bottom of intelligence-community suspicions that the US somehow blew a chance to free Terry Anderson and his fellow captives."\n\nIranian arms runner [[Manucher Ghorbanifar]] proposes "diversion" of profits from Iran arms sales to Contras.\n\nGeorge W. Bush and partners receive more than $2 million of [[Harken Energy]] stock in exchange for their failing oil well operation, which had lost $400,000 in the prior six months. Bush puts up about $500,000 and gets a $120,000 annual consulting fee along with $131,250 in stock options. After Bush joined Harken, the largest stock position and a seat on its board were acquired by Harvard Management Company. Harvard agrees to buy 1.35 million shares of Harken for $2 million and invest another $20 million in Harken projects.\n\nJeb Bush is hired by Miguel Recarey Jr. to find a new headqarters for his business. Jeb is paid $75,000 but fails to come up with a building for IMC.\n\nAccording to an HHS Medicare fraud inspector later, Miguel Recarey's IMC is using Medicare funds to treat wounded Contras. IMC is receiving $30 million a month for its Medicare patients. [[Robert Teich]], a DEA official in Miami, will later say, "IMC is a classic case of embezzlement of government funds." He calls the skimming of Medicare funds a "bust out" in which money is "drained out the back door." The Wall Street Journal will report that Santos Trafficante "helped out when Recarey needed business financing."\n\nJIM YARDLEY, NY TIMES - In his earliest known tie to the [[Enron]] Corporation, President Bush, then an oil man in West Texas, joined an energy drilling venture organized in 1986 by a subsidiary of Enron. The drilling operation - which succeeded in striking oil and natural gas in Martin County - came as Mr. Bush's company, the Spectrum 7 Energy Corporation, was struggling to stay afloat during a collapse in world oil prices. The company was also in final negotiations to be taken over by a Dallas-based company, Harken Energy. Executives involved in the drilling venture characterized it as an ordinary business deal. [[Enron Oil and Gas]], then an exploration subsidiary with offices here in Midland, served as operator and majority partner. Mr. Bush's company, which had a 10 percent working interest in the deal, was one of a handful of minority investors . . . It is unclear whether Mr. Bush was involved in the deal because he controlled adjacent mineral leases or if Spectrum 7 was simply sought out as an investor. [[Bill Morrison]], who ran the Midland, TX office of [[Enron]] Oil and Gas at the time, said he recalled soliciting about 12 to 15 companies as potential investors in the project, including Spectrum 7. He said many companies, struggling for capital, declined the offer, but Spectrum 7, apparently with cash on hand, signed on for the 10 percent interest.\n\n*1987\nBush's former chief of staff, [[Daniel Murphy]], flies to Panama with South Korean influence peddler [[Tongsun Park]] on a private plane owned by arms dealer [[Sargis Soghnalian]] to meet with Noriega. Murphy later tells a Senate subcommittee that he informed Noriega that he need not resign before the 1988 election despite the Reagan administration public pressure to the contrary.\n\nWilliam Casey dies.\n\n[[Lee Atwater]] accuses [[Robert Dole]] of spreading stories about Bush and Jennifer Fitzgerald. An agreement is worked out, as reported by Sidney Blumenthal in the Washington Post: "The Dole people didn't spread any rumors and promised not to do it again. And the Bush people haven't spread rumors about the Dole people spreading rumors and won't do it again. "\n\nHarken Energy, with George W. Bush on the board, gets rescued by aid from the BCCI-connected [[Union Bank of Switzerland]] in a deal brokered by [[Jackson Stephens]], later to show up as a key supporter of [[Bill Clinton]]. The deal was also pushed along by another Clinton friend, [[David Edwards]]. Edwards will bring BCCI-linked investors into Harken deals including [[Abdullah Bakhsh]], purchases $10 million in shares of Stephens dominated [[Worthen Bank]].\n\nJan. 15: [[Dan Lasater]] begins serving a 30-month sentence for cocaine distribution. In July, he is paroled to a Little Rock halfway house.\n\n*1988\nDan Quayle is named VP candidate. [[Stuart Spencer]] is assigned to improve Dan Quayle's image, the same job he handled for Noriega and Nixon.\n\nQuayle embarrasses campaign by such statements as "[The Holocaust] was an obscene period in our nation's history," adding that "I didn't live in this century."\n\nPrisoner who claimed he sold marijuana to Quayle is put into solitary confinement by the head of federal prisons, aborting a planned news conference shortly before the election.\n\n[[Silverado S&L]] goes under after receiving 126 cease & desist orders in past four years from the Topeka office of the [[Office of Thrift Supervision]]. These orders found conflict of interests, insider abuse and other violations.\n\n[[Dwight Chapin]], ex-Nixon dirty trickster, gets job in Bush campaign.\n\n[[Rudi Slavoff]] becomes head of [[Bulgarians for Bush]]. In 1983, Slavoff organized an event honoring [[Austin App]], promoter of the theory that the Holocaust was a hoax.\n\nSlavoff joins other GOP ethnic leaders in the [[Coalition of American Nationalities]] co-chaired by [[Edward Derwinski]]. Among them is a former member of an Hungarian pro-Nazi party. After press revelations, eight of the leaders accused of anti-semitism resign from the campaign. Bush says: "Nobody's giving in... These people left of their own account."\n\nGOP flier warns that "all the murderers, rapists and drug pushers and child molesters in Massachusetts vote for [[Michael Dukakis]]."\n\nBush establishes Team 100, which will eventually grow to 249 individuals who contribute nearly $25 million in soft money to help the GOP cause. The contributions also apparently help the contributors, various of whom get ambassadorial appointments, legislative favors, and intervention on regulatory and criminal matters.\n\nBush denies knowledge of Noriega's involvement in drug dealing.\n\nThe [[Willie Horton]] ad is aired. Credit for similar tactics is given to campaign guru [[Lee Atwater]], whose PR firm had represented drug-connected Bahamian prime minister [[Oscar Pinding]] and the Philippines' [[Ferdinand Marcos]]. Atwater himself had represented [[UNITA]], the CIA-backed Africa rebel group.\n\n[[Fred Malek]], ex-Nixon aide, resigns from the Bush campaign after it's revealed that he compiled a list of Jews in the Labor Dept. as part of a Nixon investigation of a "Jewish cabal."\n\nA few days before the supposedly surprise arrest of five [[BCCI]] officials, some of the world's most powerful drug dealers quietly withdraw millions of dollars from the bank. Some government investigators believe the dealers were tipped off by sources within the Bush administration.\n\nAlthough Felix Rodriguez, former leading cop under Batista, claims he left the CIA in 1976, Rolling Stone reports that he is still going to CIA headquarters monthly to receive assignments and get his bulletproof Cadillac serviced.\n\nBankruptcy judge [[George Bason Jr.]] concludes that the government stole [[Inslaw]]'s software through "trickery, fraud and deceit."\n\nStock market drops 43 points on false rumor that Washington Post was about the publish the Bush-Fitzgerald story.\n\n[[Aziz Rehman]], a junior BCCI official in Miami, tells a Senate committee that "I saw [[Jeb Bush]] two or three times over there. . . This was all part of the bank's trying to cultivate public officials and prominent individuals." Another BCCI official will write in his diary, "Jeb Bush, VP George Bush's son, [is] a name. . .to be remembered."\n\n*1989\nBush inaugurated. Aides tell the press that the new administration would rather "stay one step behind than be one step ahead."\n\nBush authorizes CIA support to Noriega's opposition, giving Noriega an excuse to annul Panama's elections.\n\nBush claims [[Executive Privilege]] to avoid testifying in the Oliver North trial, thus becoming first president to use this power to keep his acts as vice president under wraps.\n\nDan Quayle declares changes in Soviet Union "just a public relations extravaganza."\n\nBush brother Prescott flies to Shanghai after the [[Tiananmen Square]] massacre to close a deal for an $18 million resort there, despite his brother's ban on high-level Chinese contacts. Prescott says, "We aren't a bunch of carrion birds coming in to pick the carcass. But there are big opportunities in China, and America can't afford to be shut out."\n\nPrescott Bush also visits Japan, searching for consulting contracts just ten days before his brother arrives on a presidential tour. The Japanese firm that paid Prescott a quarter-million dollar consulting fee comes under investigation for exchange law violations and links to the Japanese mob.\n\n[[C. Boyden Gray]], the president's top ethics official, corrects his 1985 and 1986 financial disclosure forms. He forgot to include $98,000 in income.\n\nGeorge Bush signs the S&L bailout bill promising that "these problems will never happen again."\n\nThe Chicago Tribune reports: "After 14 fishing outings, the President has failed to catch a single fish."\n\nAt White House behest, the DEA lures drug dealer to Lafayette Park to make arrest in front of presidential home for the benefit of Bush's upcoming drug speech. At first, drug dealer is dubious, asks DEA agent, "Where the fuck is the White House?"\n\nDefense secretary nominee [[John Tower]] runs into confirmation troubles when it is revealed that he has received hundreds of thousands of dollars in consulting fees from [[Defense Contractors]]. Runs into more trouble with revelations of womanizing and drinking. His nomination is rejected.\n\nThe sale of three communications satellites to China is announced. Prescott Bush is a $250,000 consultant in the deal.\n\nGOP memo is leaked implying that House Speaker [[Tom Foley]] is a homosexual.\n\nPresident George H. W. Bush signs a top-secret directive ordering closer ties with Iraq, which opens the way for $1 billion in new aid just a little more than a year before Bush goes to war against that country. The agricultural credit allows [[Saddam Hussein]] to use his hard currency for a massive military buildup.\n\nA second judge concurs that the government stole [[Inslaw]]'s software.\n\nThe Statistical Abstract of the United States, published by the US government, reports that the GNP of East Germany during the 1980s was greater than that of West Germany. The figures come from the CIA.\n\nBahrain officials suddenly break off offshore drilling negotiations with [[Amoco]] and decide to deal with [[Harken Energy]], George Bush Jr.'s firm. Harken has had a series of failed ventures and no cash, so the Bass brothers are brought in to finance Harken's efforts at a cost of $50 million.\n\nNeil Bush bails out of [[JNB Exploration]], the firm where he became president with a $100 ante, leaving his partners to worry about its debt. Days earlier he forms [[Apex Energy]] with a personal investment of $3000. The rest of the money -- $2.7 million -- comes from an SBA program designed to help "high risk start-up companies." Like JNB, it proves to be just that. Apex will later go belly-up with no assets.\n\nTwo months after his father's inauguration, George W. Bush announces that he and a syndicate of investors have purchased the [[Texas Rangers]]. The investors are [[Edward Rusty Rose]], [[Richard Rainwater]], [[William DeWitt]], [[Roland Betts]] (a former Yale frat brother) and [[Tom Bernstein]] (Bett's partner in a film investment concern). While Bush appears to lead the group, Rainwater makes clear that Rose is to control how the business is run. Bush's stake in the $86 million deal is 2%, financed with a $500,000 loan from a [[Midland Bank]] of which he had been a director and $106,000 from other sources. Rainwater and Rose put up 14.2 million, Betts and Bernstein invested about $6 million and the balance comes from smaller investors and loans. Bush will eventually sell his share for $15 million.\n\n*1990\nFederal regulators give Bush son Neil the mildest possible penalty in the $1 billion failure of the [[Silverado S&L]]. The deal is so good that Bush drops his appeal. Among other things, Neil, as a Silverado director, voted to approve over $100 million in loans to his business partners.\n\nJanuary: Bahrain awards exclusive offshore drilling rights to [[Harken Energy]]. This is a surprise as Harken is in very shaky financial condition, has never drilled outside of Texas, Louisiana and Oklahoma and had never drilled undersea at all. The Bass brothers are brought in by Harken for sufficient equity - $25 million - to proceed with the effort. Harvard Management increases its investment. Harken's stock price rises from $4.50 to $5.50.\n\nMay: Harken officials warn board the company is about to run out of cash.\n\nJune: Harken drills two dry holes in Bahrain. George W. Bush sells two-thirds of his Harken Energy stock at the top of the market for $850,000, a 200% profit, but makes no report to the SEC as required by law. Bush Jr. says later the SEC misplaced the report. An SEC representative responds: "nobody ever found the 'lost' filing." One week after Bush's sale, Harken reports an earnings plunge. Harken stock falls more than 60%. Bush uses most of the proceeds to pay off the bank loan he had taken a year earlier to finance his portion of the Texas Rangers deal.\n\nAugust: [[Saddam Hussein]] invades Kuwait. Harken's stock price drops substantially. Two months after Bush sells his stock, Harken posts losses for the 2nd quarter of well over $20 million and is shares fall another 24 %, by year end Harken is trading at $1.25. Bush has insisted that he did not know about the firm's mounting losses and that his stock sell-off was approved by Harken's general counsel.\n\nGeorge W. Bush is asked by [[Carlyle Group]] to serve on the board of directors of [[Caterair]], one of the nation's largest airline catering services which it had acquired in 1989. The offer is arranged by [[Fred Malek]], long time Bush associate who is then an advisor to Carlyle.\n\nOctober: Arlington, Texas Mayor [[Richard Greene]] signs a contract that guarantees $135 million toward the new Texas Ranger Stadium's estimate price of $190 million. The Rangers put up no cash but finance their share through a ticket surcharge. From the team's operating revenues, the city will earn a maximum of $5 million annually in rent, no matter how much the Rangers reap from ticket sales and television (a sum that will rise to $100 million a year). Another provision permitts the franchise to buy the stadium after the accumulated rental payments reached a mere $ 60 million. The property acquired so cheaply by the Rangers includes not just a fancy new stadium with a seating capacity of 49,000 but an additional 270 acres of newly valuable land. Legislation is passed and signed that authorizes the Arlington Sports Facilities Development Authority with power to issue bonds and exercise eminent domain over any obstinate landowners. Never before had a Texas municipal authority been given the license to seize the property of a private citizen for the benefit of other private citizens. A recalcitrant Arlington family refuses to sell a 13 acre parcel near the stadium site for half its appraised value. The jury awards more than $4 million to the family.\n\nNovember: Harken transfers $20 million in debts to Harvard partnership, eliminates another $16 million in debt by transferring assets to Harvard.\n\n[[Fred Malek]] returns to power with ambassador status to head up planning for the economic summit.\n\nS&L industry is losing money at the rate of $3 million a minute. Bailout chief estimates total cost at $325-500 billion.\n\nSome 200 young soccer players have their games canceled for security reasons because Bush wants to go fishing on the Potomac nearby. Says one seven-year-old player: "We had a tough soccer game and he's just going fishing. He could play somewhere else."\n\nJeb Bush gets the federal government to pay off the $4.5 million he owed to a failed Florida thrift. Jeb pays $500,000.\n\n[[Jonathan Bush]]'s east coast brokerage fined in two states for violating laws and Jonathan is barred from public trading in Massachusetts.\n\nBush's attorney general, [[Richard Thornberg]][, is warned about [[BCCI]] but does nothing.\n\nFederal court of appeals throws out the [[Inslaw]] case on the grounds that it did not belong in bankruptcy court.\n\nBush says, "The economy is headed in the right direction."\n\n*1991\nJanuary: President Bush attacks Iraq.\n\nFebruary: Dubya, as the official in charge at Harken, reports his stock sale to the SEC - eight months late.\n\nApril: The SEC begins an investigation into Harken dealings. Chairman [[Richard Breeden]], who was appointed by the senior Bush and served him as an economic policy adviser, hails from [[Baker & Botts]], a big Texas oil law firm where he was a partner. Inside the SEC, [[James Doty]], general counsel and the official in charge of any litigation that might come out of the Harken investigation, is another alumnus of Baker & Botts. And as a private attorney, before joining the government, Doty represented the younger Bush in matters related to Dubya's ownership of the Rangers.\n\nAugust: The SEC reports that its staff has reviewed thousands of pages of documents, interviewed witnesses and met lawyers for Harken and Mr Bush. It concludes that there is insufficient evidence to determine that Mr Bush had any inside information or advance knowledge of Harken's losses. The SEC recommends that the matter be closed.\n\nSeptember: Harvard begins selling Harken stock at more than $6 a share, receiving $7.4 million over the next 12 months.\n\nFormer top aide to White House Chief of Staff [[John Sununu]] goes to work for a prominent figure in the BCCI scandal less than a month after leaving the Bush administration. [[Edward Rogers Jr.]] signs a $600,000 contract to give legal advice to [[Sheik Kamal Adham]], an ex-Saudi intelligence officer who is being investigated for his role in BCCI's takeover of [[First American Bancshares]].\n\nThe Miami acting US Attorney is allegedly rebuffed by the Justice Department in his efforts to indict BCCI and some of its principal officers on tax fraud charges. [[DOJ]] later denies this occurred.\n\n[[Danny Casolaro]], a reporter investigating the [[Inslaw]] story, is found dead in a motel room bathtub, the day after he met a key source. The death was ruled a //suicide//, but the evidence isn't convincing.\n\nGeorge Bush spends three nights in a Houston hotel so he can claim Texas residency. Texas has no income tax.\n\nNeil Bush bails out of [[Apex Energy]] after collecting $320,000 in salary plus expenses. [[Bill Daniels]], cable-TV magnate who has been lobbying against regulation of the cable industry, offers Neil a job. According to a representative, he "thought Neil deserved a second chance."\n\n*1992\nNew York Times reports that three of Bush's top fundraisers are being sued in connection with bank failures and another pleaded guilty to mail fraud in connection with an S&L. These men include the GOP national finance chair, vice chair and two co-chairs of the President's Dinner, which raised $9 million for Republican causes.\n\nFormer US Attorney General [[Elliot Richardson]], representing the owners of [[Inslaw]], tells Mother Jones, "I don't know any case where the government has stonewalled like this."\n\nFirst of Harken Energy's wells off Bahrain comes up dry. George W. Bush takes a leave of absence from the firm to work in his father's campaign, saying "I don't want to involve this company in any kind of allegations of conflicts or whatever may arise."\n\nVillage Voice reports that President Bush has taken at least 76 partisan flights during his term, at a cost to the taxpayers of over $6 million.\n\nNixon's Jew hunter [[Fred Malek]] is back as Bush's campaign manager.\n\nCampaign sells photo opportunities with the president at a fundraiser for $92,000 each.\n\nWashington, DC, loses $52,000 in taxes because Bush claims to be a Texas resident.\n\n[[Donald H. Alexander]] contributes $100,000 to Team 100; shortly thereafter he's named ambassador to the Netherlands.\n\nBush says: "I will do what I have to do to be re-elected."\n\nJERRY URBAN, HOUSTON CHRONICLE, JUNE 4, 1992: The Financial Crimes Enforcement Network -- known as [[FINCEN]] -- and the FBI are reviewing accusations that entrepreneur [[James R. Bath]] guided money to Houston from Saudi investors who wanted to influence US policy under the Reagan and Bush administrations, sources close to the investigations say . . . The federal review stems in part from court documents obtained through litigation by [[Bill White]], a former real estate business associate of Bath . . . White became entangled in a series of lawsuits and countersuits with Bath, who for some six years has prevailed in the courts. . . . In sworn depositions, Bath said he represented four prominent Saudis as a trustee and that he would use his name on their investments. In return, he said, he would receive a 5 percent interest in their deals. Tax documents and personal financial records show that Bath personally had a 5 percent interest in Arbusto '79 Ltd., and Arbusto '80 Ltd., limited partnerships controlled by George W. Bush, President Bush's eldest son. Arbusto means 'bush' in Spanish. Bath invested $ 50,000 in the limited partnerships, according to the documents. There is no available evidence to show whether the money came from Saudi interests. George W. Bush's company, Bush Exploration Co., general partner in the limited partnerships, went through several mergers, eventually evolving into Harken Energy Corp., a suburban Dallas-based company . . . Bush said that to his knowledge, Bath's investment was from personal funds, and no Saudi money was invested in Arbusto. Bath, 55, a former U.S. Air Force pilot, declined to comment for the record. Spokesmen for FinCEN and the FBI also declined to comment. According to a 1976 trust agreement, drawn shortly after Bush was appointed director of the Central Intelligence Agency, Saudi Sheik [[Salem M. bin Laden]] appointed Bath as his business representative in Houston. Binladen, along with his brothers, owns [[Binladen Brothers Construction]], one of the largest construction companies in the Middle East. According to White, Bath told him that he had assisted the CIA in a liaison role with Saudi Arabia since 1976. Bath has previously denied having worked for the CIA . . . Bath received a 5 percent interest in the companies that own and operate [[Houston Gulf Airport]] after purchasing it on behalf of Binladen in 1977.\n\n*1993\nThe SEC ends a perfunctory investigation of Harken.\n\nWith the new Ranger stadium being readied to open the following spring, George W. Bush announces that he would be running for governor. He is says his campaign theme will be self-reliance and personal responsibility rather than dependence on government.\n\nPBS FRONTLINE: [From a French source] The Saudi authorities' decision to issue an arrest warrant for [[Osama bin Laden]] on 16 May 1993 does not threaten to affect the relationship between the bin Ladens and the royal family. Osama, one of Mohammed's youngest sons, has been known for years for his fundamentalist activities . . . King Fahd's two closest friends were: Prince [[Mohammed Ben Abdullah]] (son of Abdul Aziz' youngest brother), who died in the early '80s and whose brother, [[Khaled Ben Abdullah]] (an associate of [[Suleiman Olayan]]), still has free access to the king; and [[Salem bin Laden]], who died in 1988 . . . Like his father in 1968, Salem died in a 1988 air crash...in Texas. He was flying a BAC 1-11 which had been bought in July 1977 by Prince [[Mohammed Ben Fahd]]. The plane's flight plans had long been at the center of a number of investigations. According to one of the plane's American pilots, it had been used in October 1980 during secret Paris meetings between US and Iranian emissaries. Nothing was ever proven, but Salem bin Laden's accidental death revived some speculation that he might have been "eliminated" as an embarrassing witness. In fact, an inquiry was held to determine the exact circumstances of the accident. The conclusions were never divulged . . . There was also a political aspect to Salem bin Laden's financial activities . . . Salem bin Laden played a role in the US operations in the Middle East and Central America during the '80s. On his death in 1968, Sheik Mohammed left behind not only an industrial and financial estate but also a progeny made up of no less than 54 sons and daughters, the fruit of a number of marriages . . . Upon Sheik Salem's death, the leadership of the group passed to his eldest son, Bakr, along with thirteen other brothers who make up the board of the bin Laden group. The most important of these are Hassan, Yeslam, and Yehia. Most of these brothers have different mothers and different nationalities as well. Each has his own set of affinities, thus contributing to the group's international scope. Bakr and Yehia are seen as representatives of the "Syrian group"; Yeslam, of the "Lebanese group". There is also a "Jordanian group." Abdul Aziz, one of the youngest brothers, represents the "Egyptian group" and is also manager of the bin Laden group's Egyptian branch, which employs over 40,000 people. Osama bin Laden is, incidentally, the only brother with a Saudi mother.\n\n*1994\nGeorge W. Bush is elected Governor of Texas, defeating [[Ann Richards]] 53 to 46 %.\n\n*1999\nGeorge W. Bush celebrates the Martin Luther King holiday by staying inside the Governor's Mansion with the windows closed so he wouldn't hear the thousands of Martin Luther King celebrants listening to speeches right outside his window on the Texas capitol grounds, less than a football field away . .\n\nNEWSMAX: Soon-to-be GOP presidential nominee George W. Bush was suspended during his service in the [[Texas Air National Guard]] for failing to take a physical that included a drug test, The Sunday Times of London reports . . . "In April 1972 the Pentagon implemented a drug-abuse testing program that required officers on 'extended active duty', including reservists such as Bush, to undergo at least one random drug test every year," reported the Times. "The annual medical exam that year included a routine analysis of urine, a close examination of the nasal cavities and specific questions about drugs." . . . But in May 1972, he took a leave of absence from the Guard to work on the Senate campaign of [[Winton Blount]], a friend of George Bush Sr., then a Texas congressman. Bush Jr. applied for a transfer from Houston to Dannelly Air Force Base in Montgomery, Alabama. But, says the Times, documents show no evidence that once in Alabama, Bush ever attended the required training. Bush's commander for the period in question, Gen. [[William Turnipseed]], now retired, claims the young airman never showed up for regular drills . . . The Texas Governor has been plagued by drug questions since last summer, when he claimed to be drug free for the last 25 years . . . Still, despite a deluge of media speculation over Bush's possible past cocaine use, not a single witness has come forward to say they saw him use the drug. On the other hand, no fewer than six witnesses have claimed in published reports that President Clinton used cocaine.\n\n"Some people have too much freedom." -- George W. Bush\n\n*2000\n"Jeb's the smart one" -- George Bush Sr. to dinner partner\n\nFormer President George Bush tries to block Gen. Manuel Noriega's release from a US prison because he fears the Panamanian strongman wants to kill him. Noriega attorney [[Frank Rubino]] says the assertion was made by Assistant US Attorney [[Pat Sullivan]], who represented the government at a parole hearing for Noriega.\n\n"//Please! Don't kill me//." -- George W. Bush to Larry King, mocking what Karla Faye Tucker said when asked "What would you say to Governor Bush?" prior to her execution by lethal injection (as reported by Talk magazine, September 1999).\n\nPRATAP CHATTERJEE, SAN FRANCISCO BAY GUARDIAN: early last October, every member of a ninth grade girls track team and the freshman the football team at suburban Houston's Deer Park High School's north campus returned from practice reporting severe breathing problems. That day Deer Park registered 251 parts of ozone per billion, more than twice the federal standard, and Houston surpassed Los Angeles as the smoggiest city in the United States. One of the biggest sources of Deer Park's pollution is a plant owned by [[Enron]], Houston's wealthiest company - and the single largest contributor ($555,000 and counting) to the political ambitions of Texas Governor and Republican presidential nominee George W. Bush. [[Kenneth Lay]], the chief executive of Enron, has personally given over $100,000 to Bush's political campaigns, more than any other individual . . . Enron is best known as the largest buyer and seller of natural gas in the country. Its 1999 revenues of $40 billion make it the 18th largest company in the United States . . . Texas activists say that this tight connection between Bush and Lay bodes ill for the country, if Bush is elected. [[Andrew Wheat]], from Texans for Public Justice, a campaign finance advocacy group in Austin, compared the symbiotic relationship between Enron and the Governor to "cogeneration" - a process used by utilities to harness waste heat vented by their generators to produce more power. "In a more sinister form of cogeneration, corporations are converting economic into political power," Wheat explained.
The [[Central Intelligence Agency|http://en.wikipedia.org/wiki/Central_Intelligence_Agency]] (CIA) is an intelligence agency of the United States Government. \n*Its primary function is obtaining and analyzing information about foreign governments, corporations, and individuals, and reporting such information to the various branches of the Government. \n*A second function is overtly and covertly disseminating information, both true and false, that influences others to make decisions favorable to the United States Government. The second function is usually known as propaganda or public relations. \n*A third function of the CIA is to act as the "hidden hand" of the government by engaging in covert operations at the direction of the President. It is this last function that has caused most of the controversies regarding the CIA over the years, raising questions about the legality, morality, effectiveness, and intelligence of such operations.\n\nIts headquarters are in the community of Langley in the Mc Lean CDP of Fairfax County, Virginia, a few miles up the Potomac River from downtown Washington, D.C.. The CIA is part of the American Intelligence Community, which is now led by the Director of National Intelligence (DNI). The roles and functions of the CIA are roughly equivalent to those of the United Kingdom's MI6 and Israel's Mossad.\n\nThe CIA acts as the primary American provider of central intelligence estimates. It is believed to make use of the surveillance satellites of the National Reconnaissance Office ([[NRO]]) and the signal interception capabilities of the National Security Agency ([[NSA]]), including the [[ECHELON]] system, the surveillance aircraft of the various branches of the U.S. armed forces and the analysts of the State Department and Department of Energy. At one point, the CIA even operated its own fleet of U-2 surveillance aircraft. The agency has also operated alongside regular military forces, and also employs a group of clandestine officers with paramilitary skills in its Special Activities Division. The CIA also has strong links with other foreign intelligence agencies such as the UK's MI6, Canada's CSIS and Australia's ASIS.\n\nThe activities of the CIA have caused considerable political controversy both in the United States and in other countries, often nominally friendly to the United States, where the agency has operated (or been alleged to). Particularly during the [[Cold War]], the CIA supported a long list of dictators, including Chile's infamous [[Augusto Pinochet]], a number of dictatorships in Central America, the [[Shah of Iran]], and the despots in Saudi Arabia, Pakistan , Kuwait and Indonesia, who have been friendly to perceived U.S. geopolitical interests (namely anti-Communism, providing access to oil companies and other multi-national corporations and implementing a liberal economic system), sometimes over democratically-elected governments.\n\nOften cited as one of the American intelligence community's biggest blunders is the CIA involvement in equipping and training [[Mujahedeen]] fighters in Afghanistan in response to the Soviet invasion of the country. The Mujahedeen trained by the CIA later formed the core of [[Osama bin Laden]]'s [[al-Qaeda]] Islamist organization. [[Zbigniew Brzezinski]], the National Security Advisor under President [[Jimmy Carter]], has discussed U.S. involvement in Afghanistan in several publications.\n\nLater, the CIA facilitated the so-called [[Reagan Doctrine]], channelling weapons and other support to Jonas Savimbi's [[UNITA]] rebel movement in Angola (in addition to the Mujahedeen and the Contras) in response to Cuban military support for the [[MPLA]], thus turning an otherwise low-profile African civil war into one of the larger battlegrounds of the Cold War.\n\nThe CIA also supported [[Pol Pot]]'s rule in Cambodia when Vietnam sought to topple the regime in 1979, Pol Pot's regime was anti-Soviet and anti-Vietnam and received aid from China during the Sino-Soviet split (at this time, China had become more friendly towards the USA), thus gaining the CIA's approval.\n\n----\n\nIn June 2005, two events occurred that may shape future CIA operations.\n\nArrest warrants for 22 CIA agents were issued within the European Union (Schengen Agreement members). The agents are alleged to have taken a suspected Egyptian terrorist, [[Hassan Mustafa Osama Nasr]], from Milan on 17 February 2003 for extraordinary [[rendition]] to Egypt, where according to relatives of the cleric, he was tortured. The removal of the terrorist was not unusual except that the Italian government has denied having approved the rendition. Similar operations of this sort have occurred worldwide since [[9-11]], the vast majority with at least tacit approval by the national government. Additionally, it allegedly disrupted Italian attempts to penetrate the terrorist's [[al-Qaeda]] network. The New York Times reported soon after that it is highly unlikely that the CIA agents involved would be extradited, despite the US-Italy bilateral treaty regarding extraditions for crimes that carry a penalty of more than a year in prison. The agents involved in the operation are also reported to have booked lavish hotels during the operation and taken taxpayer-funded vacations after it was complete. \n\nSoon after, President George W. Bush appointed the CIA to be in charge of all human intelligence and manned spying operations. This was the apparent culmination of a years old turf war regarding influence, philosophy and budget between the Defense Intelligence Agency of The Pentagon and the Central Intelligence Agency. The Pentagon, through the [[DIA]], wanted to take control of the CIA's paramilitary operations and many of its human assets. The CIA, which has for years held that human intelligence is the core of the agency, successfully argued that the CIA's decades long experience with human resources and civilian oversight made it the ideal choice. Thus, the CIA was given charge of all US human intelligence, but as a compromise, the Pentagon was authorized to include increased paramilitary capabilities in future budget requests.\n\nDespite reforms which have led back to what the CIA considers its traditional principal capacities, the CIA Director position has lost influence in the White House. For years, the Director of the CIA met regularly with the President to issue daily reports on ongoing operations. After the creation of the post of the National Intelligence Director, currently occupied by [[John Negroponte]], that practice has been discontinued in favor of the National Intelligence Director, with oversight of all intelligence, including DIA operations outside of CIA jurisdiction, giving the report. \n\nOn December 6, 2005, German [[Khalid El-Masri]] filed a lawsuit against former CIA Director [[George Tenet]], claiming that he was transported from Macedonia to a prison in Afghanistan and held captive there by the CIA for 5 months on a case of mistaken identity. Two months after his true identity had been found out, he had been taken to Albania and released without funds or an official excuse.\n\n!Criticism for ineffectiveness\n\nThe agency has also been criticized for ineffectiveness as an intelligence gathering agency. These criticisms included allowing a double agent, [[Aldrich Ames]], to gain high position within the organization, and for focusing on finding informants with information of dubious value rather than on processing the vast amount of open source intelligence. In addition, the CIA has come under particular criticism for failing to predict the collapse of the Soviet Union and India's nuclear tests or to forestall the [[9-11]], 2001 attacks.\n\nProponents of the CIA respond by stating that only the failures become known to the public, whereas the successes usually cannot be known until decades have passed because release of successful operations would reveal operational methods to foreign intelligence, which could affect future and ongoing missions. \n\n!Drug trafficking\n\n''CIA and Contras''\n\nAllegations have repeatedly been made that the CIA has been involved in drug trafficking to fund illegal operations. For example, In 1996, journalist [[Gary Webb]] wrote a series of exposes for the San Jose Mercury News, entitled "Dark Alliance", in which he alleged the use of CIA aircraft, which had ferried arms to the Contras, to ship cocaine to the United States during the return flights.\n\nWebb also alleged that Central American narcotics traffickers could import cocaine to U.S. cities in the 1980s without the interference of normal law enforcement agencies. He claimed that this led, in part, to the crack cocaine epidemic, especially in poor neighborhoods of Los Angeles, and that the CIA intervened to prevent the prosecution of drug dealers who were helping to fund the Contras. Faced with Congressional and other media criticism (especially the Los Angeles Times), the San Jose Mercury News retracted Webb's conclusions and Webb was prevented from conducting any more investigative reporting. Webb was transferred to cover non-controversial suburban stories, and he resigned.\n\nAfter the Gary Webb report in the Mercury News, the CIA Inspector General [[Frederick Hitz]] was assigned to investigate these allegations. In 1998 the new CIA director, [[George Tenet]] declared that he was releasing the report. \n\nThe report and Hitz testimony showed there the "CIA did not 'expeditiously' cut off relations with alleged drug traffickers" and "the CIA was aware of allegations that 'dozens of people and a number of companies connected in some fashion to the contra program' were involved in drug trafficking".\n\nHitz also said that under an agreement in 1982 between [[Ronald Reagan]]'s Attorney General [[William French Smith]] and the CIA, agency officers were not required to report allegations of drug trafficking involving non-employees, which was defined as meaning paid and non-paid "assets [meaning agents], pilots who ferried supplies to the contras, as well as contra officials and others. \n\nThis agreement, which had not previously been revealed, came at a time when there were allegations that the CIA was using drug dealers in its controversial covert operation to bring down the leftist [[Sandinista]] government in Nicaragua. Only after Congressional funds were restored in 1986 was the agreement modified to require the CIA to stop paying agents whom it believed were involved in the drug trade.\n\n''Kerry Committee report''\n\nLink: [[Kerry Committee report|http://en.wikipedia.org/wiki/Kerry_Committee_report]]\n\nIn 1998 Representative Maxine Waters testified to Congress:\n<<<\nSenator Kerry and his Senate investigation found drug traffickers had used the Contra war and tie to the Contra leadership to help this deadly trade. Among their devastating findings, the Kerry committee investigators found that major drug lords used the Contra supply networks and the traffickers provided support for Contras in return. The CIA of course, created, trained, supported, and directed the Contras and were involved in every level of their war.\n<<<\n[[The Kerry Committee report|http://www.pinknoiz.com/covert/contracoke.html]] found that the U.S. State Department had paid drug traffickers. Some of these payments were after the traffickers had been indicted by federal law enforcement agencies on drug charges or while traffickers were under active investigation by these same agencies. The report declared, "It is clear that individuals who provided support for the Contras were involved in drug trafficking...and elements of the Contras themselves knowingly received financial and material assistance from drug traffickers." \n[edit]\n\n''Drugs in Asia''\n\nIt has also been alleged that the CIA was involved in the opium/heroin trade in Asia, which was the focus of Alfred W. McCoy's book, The Politics of Heroin: CIA Complicity in the Global Drug Trade, an earlier edition of which had already been subjected to an attempted CIA suppression. The CIA's operation, [[Air America]], has also been accused of transporting drugs.\n\n''Mafia connections''\n\nFurther information: [[Plausible denial]], [[Operation Mongoose]], [[Cuba Project]]\n\nThe United States government has conspired with organized crime figures to assassinate foreign heads of state. In August 1960, Colonel [[Sheffield Edwards]], director of the CIA's Office of Security, proposed the assassination of Cuban head of state [[Fidel Castro]] by mafia assassins. Between August 1960, and April 1961, the CIA with the help of the Mafia pursued a series of plots to poison or shoot Castro.\n\n''Assassinations''\n\nFurther information: [[Church Committee]]\n\nThe CIA has been linked to several assassination attempts on foreign leaders, including former leader of Panama [[Omar Torrijos]] and the President of Cuba, Fidel Castro.\n\nOn January 13, 2006, the CIA launched an airstrike on Damadola, a Pakistani village near the Afghan border, where they believed [[Ayman al-Zawahiri]] was located. The airstrike killed a number of civilians but al-Zawahiri apparently was not among them. The Pakistani government issued a strong protest against the US attack, considered a violation of Pakistan's sovereignty. However, several legal experts argue that this cannot be considered an assassination attempt as al-Zawahiri is named as terrorist and an enemy combatant by the United States, and therefore this targeted killing is not covered under [[Executive Order 12333]], which banned assassinations.\n\n!Torture\n''Declassified CIA manuals''\n\n1984\n\nFurther information: [[Psychological Operations in Guerrilla Warfare|http://en.wikipedia.org/wiki/Psychological_Operations_in_Guerrilla_Warfare]]\n\nIn 1984, a CIA manual for training the Nicaraguan contras in psychological operations was discovered, entitled "Psychological Operations in Guerrilla War".\n\nThe manual recommended “selective use of violence for propagandistic effects” and to “neutralize” (i.e., kill) government officials. Nicaraguan Contras were taught:\n*... to lead demonstrators into clashes with the authorities, to provoke riots or shootings, which lead to the killing of one or more persons, who will be seen as the martyrs; this situation should be taken advantage of immediately against the Government to create even bigger conflicts. \n*...selective use of armed force for PSYOP [psychological operations] effect.... Carefully selected, planned targets — judges, police officials, tax collectors, etc. — may be removed for PSYOP effect in a UWOA [unconventional warfare operations area], but extensive precautions must insure that the people “concur” in such an act by thorough explanatory canvassing among the affected populace before and after conduct of the mission.\n \nOn January 24, 1997, two new manuals were declassified in response to a FOIA request filed by the Baltimore Sun in 1994. The first manual, "[[KUBARK]] Counterintelligence Interrogation," dated July 1963, is the source of much of the material in the second manual. The second manual, "Human Resource Exploitation Training Manual - 1983," was used in at least seven U.S. training courses conducted in Latin American countries, including Honduras, between 1982 and 1987.\n\nBoth manuals deal exclusively with interrogation.\n\nBoth manuals have an entire chapter devoted to "coercive techniques." These manuals recommend arresting suspects early in the morning by surprise, blindfolding them, and stripping them naked. Suspects should be held incommunicado and should be deprived of any kind of normal routine in eating and sleeping. Interrogation rooms should be windowless, soundproof, dark and without toilets.\n\nThe manuals advise that coercive techniques can backfire and that the threat of pain is often more effective than pain itself. The manuals describe coercive techniques to be used "to induce psychological regression in the subject by bringing a superior outside force to bear on his will to resist." These techniques include prolonged constraint, prolonged exertion, extremes of heat, cold, or moisture, deprivation of food or sleep, disrupting routines, solitary confinement, threats of pain, deprivation of sensory stimuli, hypnosis, and use of drugs or placebos. And, yes, waterboarding.
/***\n''Name:'' Calendar plugin\n''Version:'' 0.5\n''Author:'' SteveRumsby\n\n''Syntax:'' \n{{{<<calendar>>}}} or {{{<<calendar year>>}}} or {{{<<calendar year month>>}}} or {{{<<calendar thismonth>>}}}\n\n''Description:'' \nThe first form produces an full-year calendar for the current year. The second produces a full-year calendar for the given year. The third produces a single month calendar for the given month and year. The fourth form produces a single month calendar for the current month.\nWeekends and holidays are highlighted (see below for how to specify holdays).\n\n''Configuration:''\nModify this section to change the text displayed for the month and day names, to a different language for example. You can also change the format of the tiddler names linked to from each date, and the colours used.\n\n''Changes by ELS 2005.10.30:''\nconfig.macros.calendar.handler()\n^^use "tbody" element for IE compatibility^^\n^^IE returns 2005 for current year, FF returns 105... fix year adjustment accordingly^^\ncreateCalendarDays()\n^^use showDate() function (if defined) to render autostyled date with linked popup^^\ncalendar stylesheet definition\n^^use .calendar class-specific selectors, add text centering and margin settings^^\n***/\n//{{{\nconfig.macros.calendar = {};\n\nconfig.macros.calendar.monthnames = ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"];\nconfig.macros.calendar.daynames = ["M", "T", "W", "T", "F", "S", "S"];\nconfig.macros.calendar.firstday = 6; \nconfig.macros.calendar.firstweekend = 5;\n\nconfig.macros.calendar.weekendbg = "#eeeebb";\nconfig.macros.calendar.monthbg = "#889988";\nconfig.macros.calendar.holidaybg = "#ffc0c0";\n//}}}\n/***\n!Code section:\n***/\n// (you should not need to alter anything below here)//\n//{{{\nconfig.macros.calendar.tiddlerformat = "0DD/0MM/YYYY"; // This used to be changeable - for now, it isn't// <<smiley :-(>> \n\nversion.extensions.calendar = { major: 0, minor: 5, revision: 0, date: new Date(2006, 0, 11)};\nconfig.macros.calendar.monthdays = [ 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];\n\nconfig.macros.calendar.holidays = [ ]; // Not sure this is required anymore - use reminders instead\n//}}}\n\n// //Is the given date a holiday?\n//{{{\nfunction calendarIsHoliday(date)\n{\n var longHoliday = date.formatString("0DD/0MM/YYYY");\n var shortHoliday = date.formatString("0DD/0MM");\n\n for(var i = 0; i < config.macros.calendar.holidays.length; i++) {\n if(config.macros.calendar.holidays[i] == longHoliday || config.macros.calendar.holidays[i] == shortHoliday) {\n return true;\n }\n }\n return false;\n}\n//}}}\n\n// //The main entry point - the macro handler.\n// //Decide what sort of calendar we are creating (month or year, and which month or year)\n// // Create the main calendar container and pass that to sub-ordinate functions to create the structure.\n// ELS 2005.10.30: added creation and use of "tbody" for IE compatibility and fixup for year >1900//\n// ELS 2005.10.30: fix year calculation for IE's getYear() function (which returns '2005' instead of '105')//\n//{{{\nconfig.macros.calendar.handler = function(place,macroName,params)\n{\n var calendar = createTiddlyElement(place, "table", null, "calendar", null);\n var tbody = createTiddlyElement(calendar, "tbody", null, null, null);\n var today = new Date();\n var year = today.getYear();\n if (year<1900) year+=1900;\n if (params[0] == "thismonth")\n createCalendarOneMonth(tbody, year, today.getMonth());\n else if (params[0] == "lastmonth") {\n var month = today.getMonth()-1; if (month==-1) { month=11; year--; }\n createCalendarOneMonth(tbody, year, month);\n }\n else if (params[0] == "nextmonth") {\n var month = today.getMonth()+1; if (month>11) { month=0; year++; }\n createCalendarOneMonth(tbody, year, month);\n }\n else {\n if (params[0]) year = params[0];\n if(params[1])\n createCalendarOneMonth(tbody, year, params[1]-1);\n else\n createCalendarYear(tbody, year);\n }\n}\n//}}}\n\n//{{{\nfunction createCalendarOneMonth(calendar, year, mon)\n{\n var row = createTiddlyElement(calendar, "tr", null, "calenderMonthTitle", null);\n createCalendarMonthHeader(calendar, row, config.macros.calendar.monthnames[mon] + " " + year, true, year, mon);\n row = createTiddlyElement(calendar, "tr", null, "calendarDaysOfWeek", null);\n createCalendarDayHeader(row, 1);\n createCalendarDayRowsSingle(calendar, year, mon);\n}\n//}}}\n\n//{{{\nfunction createCalendarMonth(calendar, year, mon)\n{\n var row = createTiddlyElement(calendar, "tr", null, null, null);\n createCalendarMonthHeader(calendar, row, config.macros.calendar.monthnames[mon] + " " + year, false, year, mon);\n row = createTiddlyElement(calendar, "tr", null, null, null);\n createCalendarDayHeader(row, 1);\n createCalendarDayRowsSingle(calendar, year, mon);\n}\n//}}}\n\n//{{{\nfunction createCalendarYear(calendar, year)\n{\n var row;\n row = createTiddlyElement(calendar, "tr", null, null, null);\n var back = createTiddlyElement(row, "td", null, null, null);\n var backHandler = function() {\n removeChildren(calendar);\n createCalendarYear(calendar, year-1);\n };\n createTiddlyButton(back, "<", "Back", backHandler);\n back.align = "center";\n\n var yearHeader = createTiddlyElement(row, "td", null, "calendarYear", year);\n yearHeader.align = "center";\n yearHeader.setAttribute("colSpan", 19);\n\n var fwd = createTiddlyElement(row, "td", null, null, null);\n var fwdHandler = function() {\n removeChildren(calendar);\n createCalendarYear(calendar, year+1);\n };\n createTiddlyButton(fwd, ">", "Fwd", fwdHandler);\n fwd.align = "center";\n\n createCalendarMonthRow(calendar, year, 0);\n createCalendarMonthRow(calendar, year, 3);\n createCalendarMonthRow(calendar, year, 6);\n createCalendarMonthRow(calendar, year, 9);\n}\n//}}}\n\n//{{{\nfunction createCalendarMonthRow(cal, year, mon)\n{\n var row = createTiddlyElement(cal, "tr", null, null, null);\n createCalendarMonthHeader(cal, row, config.macros.calendar.monthnames[mon], false, year, mon);\n createCalendarMonthHeader(cal, row, config.macros.calendar.monthnames[mon+1], false, year, mon);\n createCalendarMonthHeader(cal, row, config.macros.calendar.monthnames[mon+2], false, year, mon);\n row = createTiddlyElement(cal, "tr", null, null, null);\n createCalendarDayHeader(row, 3);\n createCalendarDayRows(cal, year, mon);\n}\n//}}}\n\n//{{{\nfunction createCalendarMonthHeader(cal, row, name, nav, year, mon)\n{\n var month;\n if(nav) {\n var back = createTiddlyElement(row, "td", null, null, null);\n var backHandler = function() {\n var newyear = year;\n var newmon = mon-1;\n if(newmon == -1) { newmon = 11; newyear = newyear-1;}\n removeChildren(cal);\n createCalendarOneMonth(cal, newyear, newmon);\n };\n createTiddlyButton(back, "<", "Back", backHandler);\n back.align = "center";\n back.style.background = config.macros.calendar.monthbg; \n month = createTiddlyElement(row, "td", null, "calendarMonthname", name)\n month.setAttribute("colSpan", 5);\n var fwd = createTiddlyElement(row, "td", null, null, null);\n var fwdHandler = function() {\n var newyear = year;\n var newmon = mon+1;\n if(newmon == 12) { newmon = 0; newyear = newyear+1;}\n removeChildren(cal);\n createCalendarOneMonth(cal, newyear, newmon);\n };\n createTiddlyButton(fwd, ">", "Fwd", fwdHandler);\n fwd.align = "center";\n fwd.style.background = config.macros.calendar.monthbg; \n } else {\n month = createTiddlyElement(row, "td", null, "calendarMonthname", name)\n month.setAttribute("colSpan", 7);\n }\n month.align = "center";\n month.style.background = config.macros.calendar.monthbg;\n}\n//}}}\n\n//{{{\nfunction createCalendarDayHeader(row, num)\n{\n var cell;\n for(var i = 0; i < num; i++) {\n for(var j = 0; j < 7; j++) {\n var d = j + config.macros.calendar.firstday;\n if(d > 6) d = d - 7;\n cell = createTiddlyElement(row, "td", null, null, config.macros.calendar.daynames[d]);\n\n if(d == config.macros.calendar.firstweekend || d == config.macros.calendar.firstweekend+1)\n cell.className = "calendarWeekend";\n }\n }\n}\n//}}}\n\n//{{{\nfunction createCalendarDays(row, col, first, max, year, mon)\n{\n var i;\n for(i = 0; i < col; i++) {\n createTiddlyElement(row, "td", null, null, null);\n }\n var day = first;\n for(i = col; i < 7; i++) {\n var d = i + config.macros.calendar.firstday;\n if(d > 6) d = d - 7;\n var daycell = createTiddlyElement(row, "td", null, null, null);\n var isaWeekend = ((d == config.macros.calendar.firstweekend || d == (config.macros.calendar.firstweekend+1))? true:false);\n\n if(day > 0 && day <= max) {\n var celldate = new Date(year, mon, day);\n // ELS 2005.10.30: use <<date>> macro's showDate() function to create popup\n if (window.showDate) {\n showDate(daycell,celldate,"popup","DD","DD-MMM-YYYY",true, isaWeekend); \n } else {\n if(isaWeekend) daycell.style.background = config.macros.calendar.weekendbg;\n var title = celldate.formatString(config.macros.calendar.tiddlerformat);\n if(calendarIsHoliday(celldate)) {\n daycell.style.background = config.macros.calendar.holidaybg;\n }\n if(window.findTiddlersWithReminders == null) {\n var link = createTiddlyLink(daycell, title, false);\n link.appendChild(document.createTextNode(day));\n } else {\n var button = createTiddlyButton(daycell, day, title, onClickCalendarDate);\n }\n }\n }\n day++;\n }\n}\n//}}}\n\n// //We've clicked on a day in a calendar - create a suitable pop-up of options.\n// //The pop-up should contain:\n// // * a link to create a new entry for that date\n// // * a link to create a new reminder for that date\n// // * an <hr>\n// // * the list of reminders for that date\n//{{{\nfunction onClickCalendarDate(e)\n{\n var button = this;\n var date = button.getAttribute("title");\n var dat = new Date(date.substr(6,4), date.substr(3,2)-1, date.substr(0, 2));\n\n date = dat.formatString(config.macros.calendar.tiddlerformat);\n var popup = createTiddlerPopup(this);\n popup.appendChild(document.createTextNode(date));\n var newReminder = function() {\n var t = store.getTiddlers(date);\n displayTiddler(null, date, 2, null, null, false, false);\n if(t) {\n document.getElementById("editorBody" + date).value += "\sn<<reminder day:" + dat.getDate() +\n " month:" + (dat.getMonth()+1) +\n " year:" + (dat.getYear()+1900) + " title: >>";\n } else {\n document.getElementById("editorBody" + date).value = "<<reminder day:" + dat.getDate() +\n " month:" + (dat.getMonth()+1) +\n " year:" + (dat.getYear()+1900) + " title: >>";\n }\n };\n var link = createTiddlyButton(popup, "New reminder", null, newReminder); \n popup.appendChild(document.createElement("hr"));\n\n var t = findTiddlersWithReminders(dat, 0, null, null);\n for(var i = 0; i < t.length; i++) {\n link = createTiddlyLink(popup, t[i].tiddler, false);\n link.appendChild(document.createTextNode(t[i].tiddler));\n }\n}\n//}}}\n\n//{{{\nfunction calendarMaxDays(year, mon)\n{\n var max = config.macros.calendar.monthdays[mon];\n if(mon == 1 && (year % 4) == 0 && ((year % 100) != 0 || (year % 400) == 0)) {\n max++;\n }\n return max;\n}\n//}}}\n\n//{{{\nfunction createCalendarDayRows(cal, year, mon)\n{\n var row = createTiddlyElement(cal, "tr", null, null, null);\n\n var first1 = (new Date(year, mon, 1)).getDay() -1 - config.macros.calendar.firstday;\n if(first1 < 0) first1 = first1 + 7;\n var day1 = -first1 + 1;\n var first2 = (new Date(year, mon+1, 1)).getDay() -1 - config.macros.calendar.firstday;\n if(first2 < 0) first2 = first2 + 7;\n var day2 = -first2 + 1;\n var first3 = (new Date(year, mon+2, 1)).getDay() -1 - config.macros.calendar.firstday;\n if(first3 < 0) first3 = first3 + 7;\n var day3 = -first3 + 1;\n\n var max1 = calendarMaxDays(year, mon);\n var max2 = calendarMaxDays(year, mon+1);\n var max3 = calendarMaxDays(year, mon+2);\n\n while(day1 <= max1 || day2 <= max2 || day3 <= max3) {\n row = createTiddlyElement(cal, "tr", null, null, null);\n createCalendarDays(row, 0, day1, max1, year, mon); day1 += 7;\n createCalendarDays(row, 0, day2, max2, year, mon+1); day2 += 7;\n createCalendarDays(row, 0, day3, max3, year, mon+2); day3 += 7;\n }\n}\n//}}}\n\n//{{{\nfunction createCalendarDayRowsSingle(cal, year, mon)\n{\n var row = createTiddlyElement(cal, "tr", null, null, null);\n\n var first1 = (new Date(year, mon, 1)).getDay() -1 - config.macros.calendar.firstday;\n if(first1 < 0) first1 = first1+ 7;\n var day1 = -first1 + 1;\n var max1 = calendarMaxDays(year, mon);\n\n while(day1 <= max1) {\n row = createTiddlyElement(cal, "tr", null, null, null);\n createCalendarDays(row, 0, day1, max1, year, mon); day1 += 7;\n }\n}\n//}}}\n\n// //ELS 2005.10.30: added styles\n//{{{\nsetStylesheet(".calendar, .calendar table, .calendar th, .calendar tr, .calendar td { font-size:10pt; text-align:center; } .calendar { margin:0px !important; }", "calendarStyles");\n//}}}\n
[[The Carlyle Group|http://en.wikipedia.org/wiki/The_Carlyle_Group]] has become a powerhouse in affecting the direction in which our foreign policy takes, especially in regard to war. They accomplish this by hiring former government officials, then investing in private companies that are subject to government change (i.e. the military and telecommunications). \n\nWho, you may ask, do they employ to secure their government contracts? Well, check-out this list for starters:\n\n*[[Frank Carlucci]]\n - Department of Health, Education and Welfare - 1970's \n - Deputy Director, CIA - 1978-81 \n - Deputy Secretary of Defense - 1981-82 \n - National Security Director - 1987-89 \n*[[George H. W. Bush]]\n - CIA Director - 1976-77 \n - Vice President of the United States - 1981-89 \n - President of the United States - 1989-93 \n*[[James Baker III]]\n - Chief of Staff - 1981-85 \n - Secretary of the Treasury - 1985-89 \n - Secretary of State - 1989-93 \n*[[Dick Darman]] \n- Former White House Budget Chief William Kennard - Former Head, FCC \n*[[Arthur Levitt]]\n - Former Head, SEC \n*[[John Major]] \n- Former Prime Minister, Britain \n*[[Fidel Ramos]]\n - Former Philippine President \n*[[Afsaneh Beschloss]]\n - Treasurer & Chief Investment Officer of the World Bank \n*[[Anand Panyarachum]]\n - Former President, Thailand Karl \n*[[Otto Pohl]]\n - Former President, Bundesbank Louis Vuitton\n - French Aerobus Company \n*[[Park Tae Joon]]\n - Former South Korean Prime Minister \n*[[Alwaleed Sin Talal bin Abdulaziz Alsaud]]\n - Saudi Arabian Prince \n*[[George Soros]]\n - New World Order/Bilderberg luminary & int'l financier \n*[[Fred Malek]]\n - George Bush Sr's campaign manager \n\nCarlyle also employs the former chairman of BMW and Nestle, is interviewing former Clinton cabinet members (to insure that they have both sides of the aisle covered), plus once hired [[Colin Powell]][ and AOL Time-Warner Chairman [[Steve Case]] to speak at a meeting at Washington D.C.'s Monarch House. . . The Washington Business Journal simply says, "The Carlyle Group seems to play be a different set of rules."
''Angel of Death Gives Deposition to Justice Department in Inslaw Case''\nby J. Orlin Grabbe\n\nOn April 2, 1996, [[Charles S. Hayes]] -- retired [[CIA]] operative, Air Force Colonel, and Kentucky salvage dealer -- was deposed by the U.S. Department of Justice with respect to the [[Inslaw]] case [1]. The attorney for the Department of Justice, [[Beth Cook]], seemed ill-prepared for what turned out to be a brutal assault on the integrity of the Justice Department itself, which Hayes accused of lying, cheating, and stealing.\n\nHayes has recently acquired the Internet label of AOD ("Angel of Death" or "Angel of Doom") due to his efforts in encouraging the early retirement of corrupt politicians. "Do you know the [[Angel of Death]]?" Cook asked at one point. "I know him well," Hayes replied.\n\nHayes has previously testified with respect to the Inslaw case, most notably before a Chicago grand jury in August 1992. Hayes' extensive testimony in that case was redacted under the [[National Security Act]]. The reasons for the redaction are not known, but apparently the grand jury's questions led far afield from the principal topic of the Justice Department's apparently illegal sales of Inslaw's [[PROMIS]] software, and got into topics related to a tangled web of freelance arms dealers, drug runners, assassins, and government miscreants -- whose murky and disparate interrelationships Hayes dubbed "[[The Octopus]]"--a term adopted and popularized by freelance journalist [[Danny Casolaro]] [2], who used Hayes as a frequent source of information. Hayes is said to have testified to detailed criminal violations of U.S. law by employees of the [[DOJ]] and other government agencies.\n\nAlthough Hayes will not discuss his grand jury testimony, other sources say that with respect to the Inslaw case, he testified to a meeting at which he was present in Brazil in the course of which [[Earl Brian]] called Attorney General [[Edwin Meese]] (then in the United States) to get approval for the sale of PROMIS to the Brazilian government. Hayes is said to have backed up this assertion with an affidavit of Brazilian President [[Joao Figueiredo]].\n\nEarl Brian, who is said to have marketed the PROMIS software to intelligence agencies around the world, is currently under indictment in California. The indictment concerns tens of millions of dollars of fraudulent lease transactions made while Earl Brian was Chairman of the Board and Chief Executive Officer of three separate companies: [[Infotechology]], [[Financial News Network]] ([[FNN]]), and [[United Press International]] ([[UPI]]).\n\nEarly in the April 2, 1996, deposition, Justice Dept. attorney Beth Cook enjoined Hayes not to discuss his grand jury testimony. Subsequently, however, she began to question him about it. "Are you trying to entrap me?" Hayes asked.\n\nIn the five-hour deposition, Hayes declared he was not present to help Inslaw, nor to help any government agency which was pirating software. "I'm here to help the people of the United States, whom I hold in esteem second only to my God" he said, and admonished Cook for what he called her lack of preparation, laziness, and wasting of taxpayers' money. He asked her if there was "some medical reason related to the time of month" for her "arrogance" and "obstinance".\n\nHayes asked to be reimbursed for expenses related to the Justice Department subpoena. "We don't pay for subpoenas," Cook said, although in fact Federal law requires that expenses incurred in response to Federal subpoenas be reimbursed.\n\nHayes pointed out that U.S. attorney [[Allen Lear]] had threatened to bring the [[FBI]] down on him on January 18, 1996. "I don't think that's legal," Hayes said. Anyway, "the FBI is not a chartered organization."\n\n(A check with the Library of Congress shows that, in fact, the FBI is not chartered. As such, laws related to, and convictions based on, "lying to the FBI" are apparently not valid, for no such chartered organization exists. The correctness of this argument, based on lack of charter, has been upheld in court cases involving the FBI in Massachusetts and Vermont. In addition, since the FBI, as a subdivision of the Department of Justice, is larger than the [[DOJ]] itself, Federal law bars FBI employees from receiving benefits. FBI agents who currently receive benefits are thus apparently in violation of Federal law, and could properly be required to return the money.)\n\nHayes accused the DOJ of theft, saying they owed him money stemming from the largest gem seizure in U.S. history. (This appeared to be in reference to Indictment No. 86-44, [[US v. Antonio Carlos]] A Calvares, Mauricio Alcides Kruger, Mark Edward Lewis, Empresa Brasileira de Mineracao Imp e Exp. Ltda., filed Dec. 3, 1986, in the U.S. District Court for the Eastern District of Kentucky. Charles Hayes personally delivered gems with an appraised value of $1.3 million. Customs Form 4655, Receipt for Seized Goods, dated July 25, 1985, for goods delivered by Charles Hayes is signed by Paul E. Carpenter. A similar receipt on July 28 is signed by George F. Fritz, Special Agent, witnessed by John D. Morton, RAC. The total seizure in the case involved more than $10 million in property. Under 18 USC 371, 542, 545, Hayes says, he is entitled to //mordi// -- this being typically 25 percent of the total seizure, but a minimum of 10 percent.)\n\nMore relevant to the Inslaw case, is the fact that in August 1990, Charles Hayes purchased used Justice Department computers and peripheral equipment (Lot 097 from the U.S. attorney's office in Lexington, Kentucky) for salvage for $45, and found on them copies of the pirated PROMIS software, as well as sealed grand jury indictments, and the names of Justice Dept. informants. The General Accounting Office ([[GAO]]) found the Justice Department's sale of computers from which it had not erased sensitive information alarming, noting, "The error may have put some informants, witness and undercover agents in a 'life-and-death' situation."\n\nThe Justice Department, having sold Hayes the equipment, subsequently seized it under warrant -- apparently to prevent its being used as evidence in the Inslaw case. But Hayes subsequently sued and got the equipment back, plus an undetermined settlement amount. (This case is discussed, albeit somewhat incompletely and inaccurately, in David Burnham, //Above the Law: Secret Deals, Political Fixes, and Other Misadventures of the U.S. Department of Justice//, Scribner, New York, 1996).\n\nIn the April 2, 1996, deposition, Justice attorney Beth Cook seemed unaware that the Justice Department was under Congressional order from the Brookes Committee on the Judiciary (see [1]) to cease the sale of pirated software, not to mention hard drives containing confidential information. Similar restrictions have been placed on the [[IRS]] which, from its Martinsburg, West Virginia, central record depository, sold some 40,000 pounds of used computer disks containing the tax records of thousands of U.S. citizens -- records of considerable interest to credit bureaus, organized crime, and foreign intelligence organizations.\n\nWhen asked how he felt just prior to the deposition, Hayes said, "Great, Kentucky's No. 1," referring to the previous night's championship win over Syracuse by the University of Kentucky basketball team.\n\nAbout the only thing that Hayes didn't accuse the DOJ of in his April 2 deposition was murder. Others are not so kind. In its [[Addendum to INSLAW's ANALYSIS and REBUTTAL of the BUA REPORT]], dated February 14, 1994, Inslaw notes with respect to the Justice Department's Office of Special Investigations ([[OSI]]): "OSI's publicly- declared mission is to locate and deport Nazi war criminals. The Nazi war criminal program is, however, a front for the Justice Department's own covert intelligence service, according to disclosures recently made to INSLAW by several senior Justice Department career officials . . . According to written statements of which INSLAW has obtained copies, another undeclared mission of the Justice Department's covert agents was to insure that investigative journalist [[Danny Casolaro]] remained silent about the role of the Justice Department in the INSLAW scandal by murdering him in West Virginia in August 1991.\n\nIs the U.S. Department of Justice just another tentacle of [[The Octopus]]? If so, then what is the meaning of the phrase "with liberty and justice for all"?\n\nFootnotes\n\n[1] The Inslaw case was the subject of a Congressional report: The Inslaw Affair: Investigative Report by the Committee on the Judiciary, Jack Brookes, Chairman, [[House Report 102-856|http://www.eff.org/legal/cases/INSLAW/inslaw_hr.report]], U.S. Government Printing Office, Washington, 1992.\n\nSee also:\n\nMahar, Maggie, "Beneath Contemp: Did the Justice Dept. Deliberately Bankrupt INSLAW," Barron's National Business and Financial Weekly, March 21, 1988.\n\nMahar, Maggie, "Rogue Justice: Who and What Were Behind the Vendette Against INSLAW?", Barron's National Business and Financial Weekly, April 4, 1988.\n\nMartin, Harry V., "Federal Corruption: Inslaw", The Napa Sentinel, a series of articles with various titles beginning March 15, 1991 and extending through March 19, 1993.\n\nFricker, Richard L., "The Inslaw Octopus," Wired, #4, 1993.\n\nBua, Nicolas J., Report of Special Counsel Nicholas J. Bua to the Attorney General of the United States Responding to the Allegations of INSLAW, Inc., March 1993\n\nInslaw, Inc., INSLAW's ANALYSIS and REBUTTAL of the BUA REPORT, July 1993.\n\nInslaw, Inc., Addendum to INSLAW's ANALYSIS and REBUTTAL of the BUA REPORT, February 14, 1994\n\n[2] In addition to the sources mentioned in footnote [1], the death of Danny Casolaro is explored in: Connolly, John, "[[Dead Right|23 September 2006]]," Spy Magazine, January 1993.
@@background:#996600;#996600@@ - brown\n@@background:#666600;#666600@@ - green\n@@background:#ccff66;#ccff66@@ - neon green\n@@background:#eeeebb;#eeeebb@@ - cream\n@@background:#8cf;#88ccff@@ - background blue\n@@background:#18f;#1188ff@@ - top blue\n@@background:#04b;#0044bb@@ - mid blue\n@@background:#014;#001144@@ - bottom blue\n@@background:#ffc;#ffffcc@@ - bright yellow\n@@background:#fe8;#ffee88@@ - highlight yellow\n@@background:#db4;#ddbb44@@ - background yellow\n@@background:#841;#884411@@ - brown border\n@@background:#703;#770033@@ - title red\n@@background:#866;#886666@@ - subtitle grey\n@@background:#fff;#ffffff@@ - body background white\n@@background:#f7fff7;#f7fff7@@ - tiddler background green\n@@background:#31ad49;#31ad49@@ - tiddler title green\n@@background:#cdc;#ccddcc@@ - (left) main menu green\n@@background:#9a9;#99aa99@@ - (right) sidebar options green\n@@background:#676;#667766@@ - hover / unselected tab green\n@@background:#898;#889988@@ - border grey\n@@background:#bde;#bbddee@@ - messagebox blue\n@@background:#178;#117788@@ - body background dk teal\n@@background:#39a;#3399aa@@ - navbar medium teal\n\n!RGB hexadecimal 216-color "Web safe" palette\nSource: Paul Petterson, revised by Eric Shulman\n{{menubox{\n|bgcolor(#FFF):FFF |bgcolor(#CCC):CCC |bgcolor(#999):999 |bgcolor(#666):@@color(white):666@@ |bgcolor(#333):@@color(white):333@@ |bgcolor(#000):@@color(white):000@@ |bgcolor(#FC0):~FC0 |bgcolor(#F90):F90 |bgcolor(#F60):@@color(white):F60@@ |bgcolor(#F30):@@color(white):F30@@ |>|>|>|>|>| |\n|bgcolor(#9C0):9C0 |>|>|>| |bgcolor(#C90):C90 |bgcolor(#FC3):~FC3 |bgcolor(#FC6):~FC6 |bgcolor(#F96):F96 |bgcolor(#F63):@@color(white):F63@@ |bgcolor(#C30):@@color(white):C30@@ |>|>|>| |bgcolor(#C03):@@color(white):C03@@ |\n|bgcolor(#CF0):~CF0 |bgcolor(#CF3):~CF3 |bgcolor(#330):@@color(white):330@@ |bgcolor(#660):@@color(white):660@@ |bgcolor(#990):990 |bgcolor(#CC0):~CC0 |bgcolor(#FF0):~FF0 |bgcolor(#C93):C93 |bgcolor(#C63):@@color(white):C63@@ |bgcolor(#300):@@color(white):300@@ |bgcolor(#600):@@color(white):600@@ |bgcolor(#900):@@color(white):900@@ |bgcolor(#C00):@@color(white):C00@@ |bgcolor(#F00):@@color(white):F00@@ |bgcolor(#F36):@@color(white):F36@@ |bgcolor(#F03):@@color(white):F03@@ |\n|bgcolor(#9F0):9F0 |bgcolor(#CF6):~CF6 |bgcolor(#9C3):9C3 |bgcolor(#663):@@color(white):663@@ |bgcolor(#993):993 |bgcolor(#CC3):~CC3 |bgcolor(#FF3):~FF3 |bgcolor(#960):@@color(white):960@@ |bgcolor(#930):@@color(white):930@@ |bgcolor(#633):@@color(white):633@@ |bgcolor(#933):@@color(white):933@@ |bgcolor(#C33):@@color(white):C33@@ |bgcolor(#F33):@@color(white):F33@@ |bgcolor(#C36):@@color(white):C36@@ |bgcolor(#F69):@@color(white):F69@@ |bgcolor(#F06):@@color(white):F06@@ |\n|bgcolor(#6F0):6F0 |bgcolor(#9F6):9F6 |bgcolor(#6C3):6C3 |bgcolor(#690):690 |bgcolor(#996):996 |bgcolor(#CC6):~CC6 |bgcolor(#FF6):~FF6 |bgcolor(#963):@@color(white):963@@ |bgcolor(#630):@@color(white):630@@ |bgcolor(#966):@@color(white):966@@ |bgcolor(#C66):@@color(white):C66@@ |bgcolor(#F66):@@color(white):F66@@ |bgcolor(#903):@@color(white):903@@ |bgcolor(#C39):@@color(white):C39@@ |bgcolor(#F6C):@@color(white):~F6C@@ |bgcolor(#F09):@@color(white):F09@@ |\n|bgcolor(#3F0):3F0 |bgcolor(#6F3):6F3 |bgcolor(#390):390 |bgcolor(#6C0):6C0 |bgcolor(#9F3):9F3 |bgcolor(#CC9):~CC9 |bgcolor(#FF9):~FF9 |bgcolor(#C96):C96 |bgcolor(#C60):@@color(white):C60@@ |bgcolor(#C99):C99 |bgcolor(#F99):F99 |bgcolor(#F39):@@color(white):F39@@ |bgcolor(#C06):@@color(white):C06@@ |bgcolor(#906):@@color(white):906@@ |bgcolor(#F3C):@@color(white):~F3C@@ |bgcolor(#F0C):@@color(white):~F0C@@ |\n|bgcolor(#0C0):0C0 |bgcolor(#3C0):3C0 |bgcolor(#360):@@color(white):360@@ |bgcolor(#693):693 |bgcolor(#9C6):9C6 |bgcolor(#CF9):~CF9 |bgcolor(#FFC):FFC |bgcolor(#FC9):~FC9 |bgcolor(#F93):F93 |bgcolor(#FCC):FCC |bgcolor(#F9C):~F9C |bgcolor(#C69):@@color(white):C69@@ |bgcolor(#936):@@color(white):936@@ |bgcolor(#603):@@color(white):603@@ |bgcolor(#C09):@@color(white):C09@@ |bgcolor(#303):@@color(white):303@@ |\n|bgcolor(#3C3):3C3 |bgcolor(#6C6):6C6 |bgcolor(#0F0):0F0 |bgcolor(#3F3):3F3 |bgcolor(#6F6):6F6 |bgcolor(#9F9):9F9 |bgcolor(#CFC):CFC |>|>| |bgcolor(#C9C):~C9C |bgcolor(#969):@@color(white):969@@ |bgcolor(#939):@@color(white):939@@ |bgcolor(#909):@@color(white):909@@ |bgcolor(#636):@@color(white):636@@ |bgcolor(#606):@@color(white):606@@ |\n|bgcolor(#060):@@color(white):060@@ |bgcolor(#363):@@color(white):363@@ |bgcolor(#090):090 |bgcolor(#393):393 |bgcolor(#696):696 |bgcolor(#9C9):9C9 |>|>| |bgcolor(#FCF):FCF |bgcolor(#F9F):~F9F |bgcolor(#F6F):@@color(white):~F6F@@ |bgcolor(#F3F):@@color(white):~F3F@@ |bgcolor(#F0F):@@color(white):~F0F@@ |bgcolor(#C6C):@@color(white):~C6C@@ |bgcolor(#C3C):@@color(white):~C3C@@ |\n|bgcolor(#030):@@color(white):030@@ |bgcolor(#0C3):0C3 |bgcolor(#063):@@color(white):063@@ |bgcolor(#396):396 |bgcolor(#6C9):6C9 |bgcolor(#9FC):9FC |bgcolor(#CFF):CFF |bgcolor(#39F):39F |bgcolor(#9CF):9CF |bgcolor(#CCF):CCF |bgcolor(#C9F):~C9F |bgcolor(#96C):@@color(white):96C@@ |bgcolor(#639):@@color(white):639@@ |bgcolor(#306):@@color(white):306@@ |bgcolor(#90C):@@color(white):90C@@ |bgcolor(#C0C):@@color(white):~C0C@@ |\n|bgcolor(#0F3):0F3 |bgcolor(#3F6):3F6 |bgcolor(#093):093 |bgcolor(#0C6):0C6 |bgcolor(#3F9):3F9 |bgcolor(#9FF):9FF |bgcolor(#9CC):9CC |bgcolor(#06C):@@color(white):06C@@ |bgcolor(#69C):69C |bgcolor(#99F):99F |bgcolor(#99C):99C |bgcolor(#93F):@@color(white):93F@@ |bgcolor(#60C):@@color(white):60C@@ |bgcolor(#609):@@color(white):609@@ |bgcolor(#C3F):@@color(white):~C3F@@ |bgcolor(#C0F):@@color(white):~C0F@@ |\n|bgcolor(#0F6):0F6 |bgcolor(#6F9):6F9 |bgcolor(#3C6):3C6 |bgcolor(#096):096 |bgcolor(#6FF):6FF |bgcolor(#6CC):6CC |bgcolor(#699):699 |bgcolor(#036):@@color(white):036@@ |bgcolor(#369):@@color(white):369@@ |bgcolor(#66F):@@color(white):66F@@ |bgcolor(#66C):@@color(white):66C@@ |bgcolor(#669):@@color(white):669@@ |bgcolor(#309):@@color(white):309@@ |bgcolor(#93C):@@color(white):93C@@ |bgcolor(#C6F):@@color(white):~C6F@@ |bgcolor(#90F):@@color(white):90F@@ |\n|bgcolor(#0F9):0F9 |bgcolor(#6FC):6FC |bgcolor(#3C9):3C9 |bgcolor(#3FF):3FF |bgcolor(#3CC):3CC |bgcolor(#399):399 |bgcolor(#366):@@color(white):366@@ |bgcolor(#069):@@color(white):069@@ |bgcolor(#039):@@color(white):039@@ |bgcolor(#33F):@@color(white):33F@@ |bgcolor(#33C):@@color(white):33C@@ |bgcolor(#339):@@color(white):339@@ |bgcolor(#336):@@color(white):336@@ |bgcolor(#63C):@@color(white):63C@@ |bgcolor(#96F):@@color(white):96F@@ |bgcolor(#60F):@@color(white):60F@@ |\n|bgcolor(#0FC):0FC |bgcolor(#3FC):3FC |bgcolor(#0FF):0FF |bgcolor(#0CC):0CC |bgcolor(#099):099 |bgcolor(#066):@@color(white):066@@ |bgcolor(#033):@@color(white):033@@ |bgcolor(#39C):39C |bgcolor(#36C):@@color(white):36C@@ |bgcolor(#00F):@@color(white):00F@@ |bgcolor(#00C):@@color(white):00C@@ |bgcolor(#009):@@color(white):009@@ |bgcolor(#006):@@color(white):006@@ |bgcolor(#003):@@color(white):003@@ |bgcolor(#63F):@@color(white):63F@@ |bgcolor(#30F):@@color(white):30F@@ |\n|bgcolor(#0C9):0C9 |>|>|>| |bgcolor(#09C):09C |bgcolor(#3CF):3CF |bgcolor(#6CF):6CF |bgcolor(#69F):69F |bgcolor(#36F):@@color(white):36F@@ |bgcolor(#03C):@@color(white):03C@@ |>|>|>| |bgcolor(#30C):@@color(white):30C@@ |\n|>|>|>|>|>| |bgcolor(#0CF):0CF |bgcolor(#09F):09F |bgcolor(#06F):@@color(white):06F@@ |bgcolor(#03F):@@color(white):03F@@ |>|>|>|>|>| |\n<html><script>place.lastChild.style.width="95%"</script></html>}}}
[[PageTemplate]]@@font-size:xx-small;\n|>|>|[[SiteTitle]] - [[SiteSubtitle]]|\n|[[MainMenu]]<html><br></html>[[GTDMenu]]|[[DefaultTiddlers]] <html><br><br><br><br></html>[[ViewTemplate]] <html><br><br></html> [[EditTemplate]]|[[SideBarOptions]]|\n|~|~|[[OptionsPanel]]|\n|~|~|[[AdvancedOptions]]|\n|~|~|<<tiddler Configuration.SideBarTabs>>|\n@@\n''~StyleSheets :'' \n*[[StyleSheet]]\n*[[StyleSheetColors]]\n*[[StyleSheetLayout]]\n*[[StyleSheetPrint]]\n*[[IntelliTaggerStyleSheet]]\n*[[GTDStyleSheet]]\n*[[GTDTWStyleSheet]]\n\n*PageTemplate -- Contains the overall structure of the page, including the gradient macro for the masthead.\n*EditTemplate -- Contains the structure and order of the tiddler editor screen\n*ViewTemplate -- Contains the structure and order of the tiddler view screen\n*StyleSheetColors -- Contains the CSS for the colors used by the TiddlyWiki\n*StyleSheetLayout -- Contains the CSS for the layout of the TiddlyWiki\n*StyleSheetPrint -- Contains the CSS used when printing from the TiddlyWiki\n\n[[SiteUrl]]
These configuration options enable you to customize the default behaviour of this wiki. They are saved locally as cookies, just like other TiddlyWiki configuration options.\n\nThis is the tag used for the "reference" context, used to identify tiddlers that show up in the [[Reference]] list: \n<<option txtGTDReferenceContext>>\n\nThis is the tag used for the "someday-maybe" context, used to identify tiddlers that show up in the [[Someday-Maybe]] list:\n<<option txtGTDSomedayContext>>\n\nThis is the tag used for the "unfiled" context, used to tag actions when the context is not known (such as a deleted context):\n<<option txtGTDUnfiledContext>>\n\nThis value, if specified, is the number of days to keep completed actions in context and review action lists (leave blank to show all unarchived, completed actions):\n<<option txtGTDActionAging>>\n\n<<option chkGTDFancyStyle>> Use this checkbox to enable or disable the extended (fancy) GTD style specified by the GTDTWStyleSheet (you will need to reload the page to see your change)
[[SideBarTabs]]\n|[[TabTimeline]]|[[TabAll]]|[[TabTags]]|<<tiddler Configuration.TabMore>>|
|>|[[TabMore]]|\n|TabMoreMissing|TabMoreOrphans|
Joseph Daniel 'Danny' Casolaro (June 16, 1947 – August 10, 1991) was an American freelance journalist.\n\nHe was found dead in a bathtub in the Sheraton Inn, Martinsburg, West Virginia, one day after allegedly arranging to meet a source in connection with an investigation he had referred to as "the octopus." His research centered around a complex story called the [[Inslaw|inslaw]] affair, and a sprawling conspiracy theory supposedly connected to it.\n\nCasolaro's death was officially ruled a suicide, but since then some have suggested he was murdered to stop him from publishing his story, or have argued there are puzzling unresolved questions regarding the case.\n\n''Early life and career''\n\nCasolaro was born in Mc Lean, Virginia, the first of six children. His father was an obstetrician. Casolaro attended Providence College, dropping out when he was 20. He married Terrill Pace, with whom he had a son; the couple divorced after 13 years. Casolaro became a reporter for the National Enquirer and later for the trade magazine / newsletter Computer Age, which he eventually purchased and sold at a loss.\n\nHis friends described him as a Peter Pan figure with an obsessive streak, who worked for two years in the late 1970s on an alternative explanation for Watergate.\n\n''Inslaw and the Octopus''\n\nCasolaro's investigation began in early 1990 when he began to research the [[Inslaw|inslaw]] affair. Casolaro hoped to write a true crime book about his investigation. He pitched the book to several publishers and agents as he made new discoveries in the case, and got some positive responses, as well as outright rejections, but had not been offered a contract at the time of his death.\n\nThe Inslaw affair had been in the news from the mid-1980s. In his previous position with the Justice Dept, the owner of Inslaw, Inc., [[Bill Hamilton]], had helped to develop a computer software program called Prosecutor's Management Information System (or [[PROMIS]]), which was designed to handle the ever-growing papers and documents generated by law enforcement and the courts. When he left the department, he alleged that the department had stolen PROMIS and had illegally distributed it, robbing Inslaw of millions of dollars.\n\nCasolaro said he had discovered that the Inslaw case had connections to a number of other conspiracies and scandals, dating back to the supposed [[October Surprise]] conspiracy of 1980. Writing in Wired in 1993, Richard L. Fricker declared, "His theories, which some seasoned investigative journalists have described as naive, led him into a Bermuda Triangle of spooks, guns, drugs and organized crime."\n\nCasolaro alleged that he was nearly ready to have revealed a wide-ranging criminal conspiracy spanning [[Iran-Contra]], [[October Surprise]], the closure of [[BCCI]], the bombing of [[Pan Am 103]], and involving the [[CIA]], [[Mossad]], the Canadian [[RCMP]], the U.S. Justice Dept, the [[Wackenhut Corporation]], and the British security and intelligence services. Writing in the Columbia Journalism Review, Phil Linsalata notes, "Any one of those stories, of course, is a challenge for America's best journalists. Casolaro wanted to tackle them all."\n\nOne of Casolaro's major sources was [[Michael Riconosciuto]], introduced to him by Hamilton. Riconosciuto claimed to have modified Inslaw's software at the Justice Department's request, so that it could be sold to dozens of foreign governments. These modifications allegedly took place mostly at the [[Cabazon Indian Reservation]] near Indio, California, according to Riconosciuto.\n\nOne of his modifications, Riconosciuto said, allowed the U.S. government access to other nations' computers via a hidden "back door" feature. According to Riconosciuto, the [[PROMIS]] scheme was masterminded by Dr. [[Earl Brian]], a friend of [[Edwin Meese]]. Riconosciuto claimed that the scheme had its roots in the 1980 [[October Surprise]]. He and Brian had supposedly delivered $40 million to Iranians who agreed to hold the U.S. Embassy hostages until [[President Carter|Jimmy Carter]] had lost the 1980 presidential election. For his help in the October Surprise, Brian was allegedly allowed to profit from the illegal pirating of the PROMIS system.\n\nRiconosciuto also claimed to have developed a powerful "fuel air explosive" (which was allegedly tested at Area 51), and hinted at sinister goings on with extraterrestrials and their UFOs.\n\nSome of Riconosciuto's claims appear to have been supported by Bill Hamilton, although it remains unclear what the time-frame is in which the various claims were made. For example, Riconosciuto reported that Canadian officials had purchased the PROMIS software illegally. In 1996, C.D. Seltzer wrote "The Hamiltons were able to verify another of Riconosciuto's claim in 1991 quite by accident. The couple inadvertently learned the Canadian government was using their software at 900 locations, after Inslaw received a phone inquiry and a questionnaire in the mail asking whether bi-lingual versions of their software were available. When the Hamiltons made their own inquiry, the Canadians at first played coy, but then admitted acquiring Promis from Strategic Software Planning Corp. of Cambridge, Mass." Casolaro also claimed to have located independent witnesses who asserted that Riconosciuto and Brian had been seen together on several occasions.\n\n''Death''\n\nCasolaro said that he was going to Martinsburg, West Virginia to meet with a source who promised to provide an important missing piece of the Octopus puzzle. According to conspiracy theorists Kenn Thomas and Jim Keith, a waitress at the Sheraton's bar reported that in the evening of August 9, 1991, Casolaro met with a man she described as "maybe Arab or Iranian," while hotel guest Mike Looney chatted with Casolaro, who reported that he was at the hotel to meet a man and "Looney thinks that Casolaro told him the contact was an Arab". \n\nThe next day, housekeeping staff discovered Casolaro naked in the bathtub of his room. His wrists had been deeply slashed twelve times, and there was blood splattered on the bathroom's walls and floor, a half-empty wine bottle was found in the room as well. According to Ridgeway and Vaughn's Village Voice article, the scene was so gruesome that one of the housekeepers fainted when she saw it. \n\nAuthorities were called to the scene. Under Casolaro's body, paramedics found a beer can, two garbage bags, and a straight razor. A note was found in his room, which read: "To my loved ones, please forgive me, most especially my son, and be understanding. God will let me in." \n\nAuthorities judged the case a suicide. Writing in Spy in 1993, [[John Connolly|23 September 2006]] noted "So sure was everyone that Casolaro had killed himself that that very night, even before his family was notified of his death, [[Charles Brown]], the undertaker, embalmed the body. Brown would later give the most ordinary of reasons for doing so- 'I didn't want to come back to work on Sunday' - though embalming a body without the permission of the next of kin is illegal in West Virginia. Had Brown or the authorities spoken to Casolaro's brother Tony, they surely would have proceeded more carefully. Tony would have undoubtedly mentioned what Danny had said to him just a few days before: 'I have been getting some very threatening phone calls. If anything happens to me, don't believe it was accidental.'"\n\nA few days after Casolaro's body was discovered, FBI agent [[Thomas Gates]] (an acquaintance of Casolaro's) contacted Martinsburg authorities. Only then, according to Connolly, did Martinsburg authorities learn "they had something stickier on their hands" than a common suicide. Connolly notes that there was "national press scrutiny" of the way Martinsburg authorities handled the case.\n\nAfterwards, an autopsy was performed by the state medical examiner's office; Connolly quoted Dr. Michael Baden as saying that the results of Casolaro's autopsy are unreliable because "embalming of the body makes the report fatally flawed." Five months after Casolaro's body was discovered, a suicide verdict was returned. Beyond the cause of death (blood loss due to the wounds on his wrists) the autopsy uncovered Vicodin and antidepressant medication in Casolaro's body, and evidence of the early stages of multiple sclerosis. The type of wine found in the room was identical to several bottles at Casolaro's home.\n\nSome have suggested that the Casolaro's death deserves closer scrutiny. A 1992 report on the Inslaw affair prepared by the U.S. House of Representatives concluded: "Based on the evidence collected by the committee, it appears that the path followed by Danny Casolaro in pursuing his investigation into the INSLAW matter brought him in contact with a number of dangerous individuals associated with organized crime and the world of covert intelligence operations. The suspicious circumstances surrounding his death have led some law enforcement professionals and others to believe that his death may not have been a suicide. As long as the possibility exists that Danny Casolaro died as a result of his investigation into the INSLAW matter, it is imperative that further investigation be conducted."\n\nOn the other hand, some have accepted the suicide verdict. For example, a 1991 Vanity Fair article written by Ron Rosenbaum, a journalist friend of Casolaro's, argued that he may have committed suicide after learning he was suffering from multiple sclerosis, but did so in a way suggestive of murder in order to promote the story he had been working on (Rosenbaum 1991).
/***\n''Date Plugin for TiddlyWiki version 2.x''\n^^author: Eric Shulman - ELS Design Studios\nsource: http://www.TiddlyTools.com/#DatePlugin\nlicense: [[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]]^^\n^^last update: <<date tiddler "DDD, MMM DDth, YYYY hh:0mm:0ss">>^^\n\nThere are quite a few calendar generators, reminders, to-do lists, 'dated tiddlers' journals, blog-makers and GTD-like schedule managers that have been built around TW. While they all have different purposes, and vary in format, interaction, and style, in one way or another each of these plugins displays and/or uses date-based information to make finding, accessing and managing relevant tiddlers easier. This plugin provides a general approach to embedding dates and date-based links/menus within tiddler content.\n\nYou can ''specify a date using a combination of year, month, and day number values or mathematical expressions (such as "Y+1" or "D+30")'', and then just display it as formatted date text, or create a ''link to a 'dated tiddler''' for quick blogging, or create a ''popup menu'' containing the dated tiddler link plus links to ''tiddlers that were changed'' as well as any ''scheduled reminders'' for that date.\n!!!!!Usage\n<<<\nWhen installed, this plugin defines a macro: {{{<<date [mode] [date] [format] [linkformat]>>}}}. All of the macro parameters are optional and, in it's simplest form, {{{<<date>>}}}, it is equivalent to the ~TiddlyWiki core macro, {{{<<today>>}}}.\n\nHowever, where {{{<<today>>}}} simply inserts the current date/time in a predefined format (or custom format, using {{{<<today [format]>>}}}), the {{{<<date>>}}} macro's parameters take it much further than that:\n* [mode] is either ''display'', ''link'' or ''popup''. If omitted, it defaults to ''display''. This param let's you select between simply displaying a formatted date, or creating a link to a specific 'date titled' tiddler or a popup menu containing a dated tiddler link, plus links to changes and reminders.\n* [date] lets you enter ANY date (not just today) as ''year, month, and day values or simple mathematical expressions'' using pre-defined variables, Y, M, and D for the current year, month and day, repectively. You can display the modification date of the current tiddler by using the keyword: ''tiddler'' in place of the year, month and day parameters. Use ''tiddler://name-of-tiddler//'' to display the modification date of a specific tiddler. You can also use keywords ''today'' or ''filedate'' to refer to these //dynamically changing// date/time values. \n* [format] and [linkformat] uses standard ~TiddlyWiki date formatting syntax. The default is "YYYY.0MM.0DD"\n>^^''DDD'' - day of week in full (eg, "Monday"), ''DD'' - day of month, ''0DD'' - adds leading zero^^\n>^^''MMM'' - month in full (eg, "July"), ''MM'' - month number, ''0MM'' - adds leading zero^^\n>^^''YYYY'' - full year, ''YY'' - two digit year, ''hh'' - hours, ''mm'' - minutes, ''ss'' - seconds^^\n>^^//note: use of hh, mm or ss format codes is only supported with ''tiddler'', ''today'' or ''filedate'' values//^^\n* [linkformat] - specify an alternative date format so that the title of a 'dated tiddler' link can have a format that differs from the date's displayed format\n\nIn addition to the macro syntax, DatePlugin also provides a public javascript API so that other plugins that work with dates (such as calendar generators, etc.) can quickly incorporate date formatted links or popups into their output:\n\n''{{{showDate(place, date, mode, format, linkformat, autostyle, weekend)}}}'' \n\nNote that in addition to the parameters provided by the macro interface, the javascript API also supports two optional true/false parameters:\n* [autostyle] - when true, the font/background styles of formatted dates are automatically adjusted to show the date's status: 'today' is boxed, 'changes' are bold, 'reminders' are underlined, while weekends and holidays (as well as changes and reminders) can each have a different background color to make them more visibly distinct from each other.\n* [weekend] - true indicates a weekend, false indicates a weekday. When this parameter is omitted, the plugin uses internal defaults to automatically determine when a given date falls on a weekend.\n<<<\n!!!!!Examples\n<<<\nThe current date: <<date>>\nThe current time: <<date today "0hh:0mm:0ss">>\nToday's blog: <<date link today "DDD, MMM DDth, YYYY">>\nRecent blogs/changes/reminders: <<date popup Y M D-1 "yesterday">> <<date popup today "today">> <<date popup Y M D+1 "tomorrow">>\nThe first day of next month will be a <<date Y M+1 1 "DDD">>\nThis tiddler (DatePlugin) was last updated on: <<date tiddler "DDD, MMM DDth, YYYY">>\nThe SiteUrl was last updated on: <<date tiddler:SiteUrl "DDD, MMM DDth, YYYY">>\nThis document was last saved on <<date filedate "DDD, MMM DDth, YYYY at 0hh:0mm:0ss">>\n<<date 2006 07 24 "MMM DDth, YYYY">> will be a <<date 2006 07 24 "DDD">>\n<<<\n!!!!!Installation\n<<<\nimport (or copy/paste) the following tiddlers into your document:\n''DatePlugin'' (tagged with <<tag systemConfig>>)\n<<<\n!!!!!Revision History\n<<<\n''2006.03.08 [2.1.2]''\nadd 'override leadtime' flag param in call to findTiddlersWithReminders(), and add "Enter a title" default text to new reminder handler. Thanks to Jeremy Sheeley for these additional tweaks.\n''2006.03.06 [2.1.0]''\nhasReminders() nows uses window.reminderCacheForCalendar[] when present. If calendar cache is not present, indexReminders() now uses findTiddlersWithReminders() with a 90-day look ahead to check for reminders. Also, switched default background colors for autostyled dates: reminders are now greenish ("c0ffee") and holidays are now reddish ("ffaace").\n''2006.02.14 [2.0.5]''\nwhen readOnly is set (by TW core), omit "new reminders..." popup menu item and, if a "dated tiddler" does not already exist, display the date as simple text instead of a link.\n''2006.02.05 [2.0.4]''\nadded var to variables that were unintentionally global. Avoids FireFox 1.5.0.1 crash bug when referencing global variables\n''2006.01.18 [2.0.3]''\nIn 1.2.x the tiddler editor's text area control was given an element ID=("tiddlerBody"+title), so that it was easy to locate this field and programmatically modify its content. With the addition of configuration templates in 2.x, the textarea no longer has an ID assigned. To find this control we now look through all the child nodes of the tiddler editor to locate a "textarea" control where attribute("edit") equals "text", and then append the new reminder to the contents of that control.\n''2006.01.11 [2.0.2]''\ncorrect 'weekend' override detection logic in showDate()\n''2006.01.10 [2.0.1]''\nallow custom-defined weekend days (default defined in config.macros.date.weekend[] array)\nadded flag param to showDate() API to override internal weekend[] array\n''2005.12.27 [2.0.0]''\nUpdate for TW2.0\nAdded parameter handling for 'linkformat'\n''2005.12.21 [1.2.2]''\nFF's date.getYear() function returns 105 (for the current year, 2005). When calculating a date value from Y M and D expressions, the plugin adds 1900 to the returned year value get the current year number. But IE's date.getYear() already returns 2005. As a result, plugin calculated date values on IE were incorrect (e.g., 3905 instead of 2005). Adding +1900 is now conditional so the values will be correct on both browsers.\n''2005.11.07 [1.2.1]''\nadded support for "tiddler" dynamic date parameter\n''2005.11.06 [1.2.0]''\nadded support for "tiddler:title" dynamic date parameter\n''2005.11.03 [1.1.2]''\nwhen a reminder doesn't have a specified title parameter, use the title of the tiddler that contains the reminder as "fallback" text in the popup menu. Based on a suggestion from BenjaminKudria.\n''2005.11.03 [1.1.1]''\nTemporarily bypass hasReminders() logic to avoid excessive overhead from generating the indexReminders() cache. While reminders can still appear in the popup menu, they just won't be indicated by auto-styling the date number that is displayed. This single change saves approx. 60% overhead (5 second delay reduced to under 2 seconds).\n''2005.11.01 [1.1.0]''\ncorrected logic in hasModifieds() and hasReminders() so caching of indexed modifieds and reminders is done just once, as intended. This should hopefully speed up calendar generators and other plugins that render multiple dates...\n''2005.10.31 [1.0.1]''\ndocumentation and code cleanup\n''2005.10.31 [1.0.0]''\ninitial public release\n''2005.10.30 [0.9.0]''\npre-release\n<<<\n!!!!!Credits\n<<<\nThis feature was developed by EricShulman from [[ELS Design Studios|http:/www.elsdesign.com]].\n<<<\n!!!!!Code\n***/\n//{{{\nversion.extensions.date = {major: 2, minor: 1, revision: 2, date: new Date(2006,3,8)};\n//}}}\n\n//{{{\n// 1.2.x compatibility\nif (!window.story) window.story=window;\nif (!store.getTiddler) store.getTiddler=function(title){return store.tiddlers[title]}\nif (!store.addTiddler) store.addTiddler=function(tiddler){store.tiddlers[tiddler.title]=tiddler}\nif (!store.deleteTiddler) store.deleteTiddler=function(title){delete store.tiddlers[title]}\n//}}}\n\n//{{{\nconfig.macros.date = {\n format: "YYYY.0MM.0DD", // default date display format\n linkformat: "YYYY.0MM.0DD", // 'dated tiddler' link format\n weekendbg: "#c0c0c0", // "cocoa"\n holidaybg: "#ffaace", // "face"\n modifiedsbg: "#bbeeff", // "beef"\n remindersbg: "#c0ffee", // "coffee"\n holidays: [ "01/01", "07/04", "07/24", "11/24" ], // NewYearsDay, IndependenceDay(US), Eric's Birthday (hooray!), Thanksgiving(US)\n weekend: [ 1,0,0,0,0,0,1 ] // [ day index values: sun=0, mon=1, tue=2, wed=3, thu=4, fri=5, sat=6 ]\n};\n//}}}\n\n//{{{\nconfig.macros.date.handler = function(place,macroName,params)\n{\n // do we want to see a link, a popup, or just a formatted date?\n var mode="display";\n if (params[0]=="display") { mode=params[0]; params.shift(); }\n if (params[0]=="popup") { mode=params[0]; params.shift(); }\n if (params[0]=="link") { mode=params[0]; params.shift(); }\n // get the date\n var now = new Date();\n var date = now;\n if (!params[0] || params[0]=="today")\n { params.shift(); }\n else if (params[0]=="filedate")\n { date=new Date(document.lastModified); params.shift(); }\n else if (params[0]=="tiddler")\n { date=store.getTiddler(story.findContainingTiddler(place).id.substr(7)).modified; params.shift(); }\n else if (params[0].substr(0,8)=="tiddler:")\n { var t; if ((t=store.getTiddler(params[0].substr(8)))) date=t.modified; params.shift(); }\n else {\n var y = eval(params.shift().replace(/Y/ig,(now.getYear()<1900)?now.getYear()+1900:now.getYear()));\n var m = eval(params.shift().replace(/M/ig,now.getMonth()+1));\n var d = eval(params.shift().replace(/D/ig,now.getDate()+0));\n date = new Date(y,m-1,d);\n }\n // date format with optional custom override\n var format=this.format; if (params[0]) format=params.shift();\n var linkformat=this.linkformat; if (params[0]) linkformat=params.shift();\n showDate(place,date,mode,format,linkformat);\n}\n//}}}\n\n//{{{\nwindow.showDate=showDate;\nfunction showDate(place,date,mode,format,linkformat,autostyle,weekend)\n{\n if (!mode) mode="display";\n if (!format) format=config.macros.date.format;\n if (!linkformat) linkformat=config.macros.date.linkformat;\n if (!autostyle) autostyle=false;\n\n // format the date output\n var title = date.formatString(format);\n var linkto = date.formatString(linkformat);\n\n // just show the formatted output\n if (mode=="display") { place.appendChild(document.createTextNode(title)); return; }\n\n // link to a 'dated tiddler'\n var link = createTiddlyLink(place, linkto, false);\n link.appendChild(document.createTextNode(title));\n link.title = linkto;\n link.date = date;\n link.format = format;\n link.linkformat = linkformat;\n\n // if using a popup menu, replace click handler for dated tiddler link\n // with handler for popup and make link text non-italic (i.e., an 'existing link' look)\n if (mode=="popup") {\n link.onclick = onClickDatePopup;\n link.style.fontStyle="normal";\n }\n\n // format the popup link to show what kind of info it contains (for use with calendar generators)\n if (!autostyle) return;\n if (hasModifieds(date))\n { link.style.fontStyle="normal"; link.style.fontWeight="bold"; }\n if (hasReminders(date))\n { link.style.textDecoration="underline"; }\n if(isToday(date))\n { link.style.border="1px solid black"; }\n\n if( (weekend!=undefined?weekend:isWeekend(date)) && (config.macros.date.weekendbg!="") )\n { place.style.background = config.macros.date.weekendbg; }\n if(isHoliday(date)&&(config.macros.date.holidaybg!=""))\n { place.style.background = config.macros.date.holidaybg; }\n if (hasModifieds(date)&&(config.macros.date.modifiedsbg!=""))\n { place.style.background = config.macros.date.modifiedsbg; }\n if (hasReminders(date)&&(config.macros.date.remindersbg!=""))\n { place.style.background = config.macros.date.remindersbg; }\n}\n//}}}\n\n//{{{\nfunction isToday(date) // returns true if date is today\n { var now=new Date(); return ((now-date>=0) && (now-date<86400000)); }\n\nfunction isWeekend(date) // returns true if date is a weekend\n { return (config.macros.date.weekend[date.getDay()]); }\n\nfunction isHoliday(date) // returns true if date is a holiday\n{\n var longHoliday = date.formatString("0MM/0DD/YYYY");\n var shortHoliday = date.formatString("0MM/0DD");\n for(var i = 0; i < config.macros.date.holidays.length; i++) {\n var holiday=config.macros.date.holidays[i];\n if (holiday==longHoliday||holiday==shortHoliday) return true;\n }\n return false;\n}\n//}}}\n\n//{{{\n// Event handler for clicking on a day popup\nfunction onClickDatePopup(e)\n{\n if (!e) var e = window.event;\n var theTarget = resolveTarget(e);\n var popup = createTiddlerPopup(this);\n if(popup) {\n // always show dated tiddler link (or just date, if readOnly) at the top...\n if (!readOnly || store.tiddlerExists(this.date.formatString(this.linkformat)))\n createTiddlyLink(popup,this.date.formatString(this.linkformat),true);\n else\n createTiddlyText(popup,this.date.formatString(this.linkformat));\n addModifiedsToPopup(popup,this.date,this.format);\n addRemindersToPopup(popup,this.date,this.linkformat);\n }\n scrollToTiddlerPopup(popup,false);\n e.cancelBubble = true;\n if (e.stopPropagation) e.stopPropagation();\n return(false);\n}\n//}}}\n\n//{{{\nfunction indexModifieds() // build list of tiddlers, hash indexed by modification date\n{\n var modifieds= { };\n var tiddlers = store.getTiddlers("title");\n for (var t = 0; t < tiddlers.length; t++) {\n var date = tiddlers[t].modified.formatString("YYYY0MM0DD")\n if (!modifieds[date])\n modifieds[date]=new Array();\n modifieds[date].push(tiddlers[t].title);\n }\n return modifieds;\n}\nfunction hasModifieds(date) // returns true if date has modified tiddlers\n{\n if (!config.macros.date.modifieds) config.macros.date.modifieds = indexModifieds();\n return (config.macros.date.modifieds[date.formatString("YYYY0MM0DD")]!=undefined);\n}\n\nfunction addModifiedsToPopup(popup,when,format)\n{\n if (!config.macros.date.modifieds) config.macros.date.modifieds = indexModifieds();\n var indent=String.fromCharCode(160)+String.fromCharCode(160);\n var mods = config.macros.date.modifieds[when.formatString("YYYY0MM0DD")];\n if (mods) {\n mods.sort();\n var e=createTiddlyElement(popup,"div",null,null,"changes:");\n for(var t=0; t<mods.length; t++) {\n var link=createTiddlyLink(popup,mods[t],false);\n link.appendChild(document.createTextNode(indent+mods[t]));\n createTiddlyElement(popup,"br",null,null,null);\n }\n }\n}\n//}}}\n\n//{{{\nfunction indexReminders(date,leadtime) // build list of tiddlers with reminders, hash indexed by reminder date\n{\n var reminders = { };\n if(window.findTiddlersWithReminders!=undefined) { // reminder plugin is installed\n // DEBUG var starttime=new Date();\n var t = findTiddlersWithReminders(date, [0,leadtime], null, null, 1);\n for(var i=0; i<t.length; i++) reminders[t[i].matchedDate]=true;\n // DEBUG var out="Found "+t.length+" reminders in "+((new Date())-starttime+1)+"ms\sn";\n // DEBUG out+="startdate: "+date.toLocaleDateString()+"\sn"+"leadtime: "+leadtime+" days\sn\sn";\n // DEBUG for(var i=0; i<t.length; i++) { out+=t[i].matchedDate.toLocaleDateString()+" "+t[i].params.title+"\sn"; }\n // DEBUG alert(out);\n }\n return reminders;\n}\n\nfunction hasReminders(date) // returns true if date has reminders\n{\n if (window.reminderCacheForCalendar)\n return window.reminderCacheForCalendar[date]; // use calendar cache\n if (!config.macros.date.reminders)\n config.macros.date.reminders = indexReminders(date,90); // create a 90-day leadtime reminder cache\n return (config.macros.date.reminders[date]);\n}\n\nfunction addRemindersToPopup(popup,when,format)\n{\n if(window.findTiddlersWithReminders==undefined) return; // reminder plugin not installed\n\n var indent = String.fromCharCode(160)+String.fromCharCode(160);\n var reminders=findTiddlersWithReminders(when, [0,31],null,null,1);\n var e=createTiddlyElement(popup,"div",null,null,"reminders:"+(!reminders.length?" none":""));\n for(var t=0; t<reminders.length; t++) {\n link = createTiddlyLink(popup,reminders[t].tiddler,false);\n var diff=reminders[t].diff;\n diff=(!diff)?"Today":((diff==1)?"Tomorrow":diff+" days");\n var txt=(reminders[t].params["title"])?reminders[t].params["title"]:reminders[t].tiddler;\n link.appendChild(document.createTextNode(indent+diff+" - "+txt));\n createTiddlyElement(popup,"br",null,null,null);\n }\n if (readOnly) return; // omit "new reminder..." link\n var link = createTiddlyLink(popup,indent+"new reminder...",true); createTiddlyElement(popup,"br");\n var title = when.formatString(format);\n link.title="add a reminder to '"+title+"'";\n link.onclick = function() {\n // show tiddler editor\n story.displayTiddler(null, title, 2, null, null, false, false);\n // find body 'textarea'\n var c =document.getElementById("tiddler" + title).getElementsByTagName("*");\n for (var i=0; i<c.length; i++) if ((c[i].tagName.toLowerCase()=="textarea") && (c[i].getAttribute("edit")=="text")) break;\n // append reminder macro to tiddler content\n if (i<c.length) {\n if (store.tiddlerExists(title)) c[i].value+="\sn"; else c[i].value="";\n c[i].value += "<<reminder";\n c[i].value += " day:"+when.getDate();\n c[i].value += " month:"+(when.getMonth()+1);\n c[i].value += " year:"+when.getFullYear();\n c[i].value += ' title:"Enter a title" >>';\n }\n };\n}\n//}}}\n
[[Journal : Last 30 Entries]]\n[[TimeLine]]
/***\n''Export Tiddlers Plugin for TiddlyWiki version 2.0''\n^^author: Eric Shulman - ELS Design Studios\nsource: http://www.TiddlyTools.com/#ExportTiddlersPlugin\nlicense: [[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]]^^\n\nWhen many people edit copies of the same TiddlyWiki document, the ability to easily copy and share these changes so they can then be redistributed to the entire group is very important. This ability is also very useful when moving your own tiddlers from document to document (e.g., when upgrading to the latest version of TiddlyWiki, or 'pre-loading' your favorite stylesheets into a new 'empty' TiddlyWiki document.)\n\nExportTiddlersPlugin let you ''select and extract tiddlers from your ~TiddlyWiki documents and save them to a local file'' or a remote server (requires installation of compatible server-side scripting, still under development...). An interactive control panel lets you specify a destination, and then select which tiddlers to export. A convenient 'selection filter' helps you pick desired tiddlers by specifying a combination of modification dates, tags, or tiddler text to be matched or excluded. ''Tiddler data can be output as ~TiddlyWiki "storeArea ~DIVs" that can be imported into another ~TiddlyWiki or as ~RSS-compatible XML that can be published for RSS syndication.''\n\n!!!!!Inline interface (live)\n<<<\n<<exportTiddlers inline>>\n<<<\n!!!!!Usage\n<<<\nOptional "special tiddlers" used by this plugin:\n* SiteUrl^^\nURL for official server-published version of document being viewed\ndefault: //none//^^\n* SiteHost^^\nhost name/address for remote server (e.g., "www.server.com" or "192.168.1.27")\ndefault: //none//^^\n* SitePost^^\nremote path/filename for submitting changes (e.g., "/cgi-bin/submit.cgi")\ndefault: //none//^^\n* SiteParams^^\narguments (if any) for server-side receiving script\ndefault: //none//^^\n* SiteID^^\nusername or other authorization identifier for login-controlled access to remote server\ndefault: current TiddlyWiki username (e.g., "YourName")^^\n* SiteDate^^\nstored date/time stamp for most recent published version of document\ndefault: current document.modified value (i.e., the 'file date')^^\n<<<\n!!!!!Example\n<<<\n<<exportTiddlers>>\n<<<\n!!!!!Installation\n<<<\nImport (or copy/paste) the following tiddlers into your document:\n''ExportTiddlersPlugin'' (tagged with <<tag systemConfig>>)\n\ncreate/edit ''SideBarOptions'': (sidebar menu items) \n^^Add "< < exportTiddlers > >" macro^^\n<<<\n!!!!!Revision History\n<<<\n''2006.02.12 [2.1.2]''^^\nadded var to unintended global 'tags' in matchTags(). Avoids FF1501 bug when filtering by tags. (based on report by TedPavlic)\n''2006.02.04 [2.1.1]''^^\nadded var to variables that were unintentionally global. Avoids FireFox 1.5.0.1 crash bug when referencing global variables\n''2006.02.02 [2.1.0]''^^\nAdded support for output of complete TiddlyWiki documents. Let's you use ExportTiddlers to generate 'starter' documents from selected tiddlers.^^\n''2006.01.21 [2.0.1]''^^\nDefer initial panel creation and only register a notification function when panel first is created\nin saveChanges 'hijack', create panel as needed. Note: if window.event is not available to identify the click location, the export panel is positioned relative to the 'tiddlerDisplay' element of the TW document.\n^^\n''2005.12.27 [2.0.0]''^^\nUpdate for TW2.0\nDefer initial panel creation and only register a notification function when panel first is created\n^^\n''2005.12.24 [0.9.5]''^^\nMinor adjustments to CSS to force correct link colors regardless of TW stylesheet selection\n^^\n''2005.12.16 [0.9.4]''^^\nDynamically create/remove exportPanel as needed to ensure only one instance of interface elements exists, even if there are multiple instances of macro embedding.\n^^\n''2005.11.15 [0.9.2]''^^\nadded non-Ajax post function to bypass javascript security restrictions on cross-domain I/O. Moved AJAX functions to separate tiddler (no longer needed here). Generalized HTTP server to support UnaWiki servers\n^^\n+++[previous releases...]\n''2005.11.08 [0.9.1]''^^\nmoved HTML, CSS and control initialization into exportInit() function and call from macro handler instead of at load time. This allows exportPanel to be placed within the same containing element as the "export tiddlers" button, so that relative positioning can be achieved.\n^^\n''2005.10.28 [0.9.0]''^^\nadded 'select opened tiddlers' feature\nBased on a suggestion by Geoff Slocock\n^^\n''2005.10.24 [0.8.3]''^^\nCorrected hijack of 'save changes' when using http:\n^^\n''2005.10.18 [0.8.2]''^^\nadded AJAX functions\n^^\n''2005.10.18 [0.8.1]''^^\nCorrected timezone handling when filtering for date ranges.\nImproved error checking/reporting for invalid filter values and filters that don't match any tiddlers.\nExporting localfile-to-localfile is working for IE and FF\nExporting server-to-localfile works in IE (after ActiveX warnings), but has security issues in FF\nCross-domain exporting (localfile/server-to-server) is under development\nCookies to remember filter settings - coming soon\nMore style tweaks, minor text changes and some assorted layout cleanup.\n^^\n''2005.10.17 [0.8.0]''^^\nFirst pre-release.\n^^\n''2005.10.16 [0.7.0]''^^\nfilter by tags\n^^\n''2005.10.15 [0.6.0]''^^\nfilter by title/text\n^^\n''2005.10.14 [0.5.0]''^^\nexport to local file (DIV or XML)\n^^\n''2005.10.14 [0.4.0]''^^\nfilter by start/end date\n^^\n''2005.10.13 [0.3.0]''^^\npanel interaction\n^^\n''2005.10.11 [0.2.0]''^^\npanel layout\n^^\n''2005.10.10 [0.1.0]''^^\ncode framework\n^^\n''2005.10.09 [0.0.0]''^^\ndevelopment started\n^^\n===\n<<<\n!!!!!Credits\n<<<\nThis feature was developed by EricShulman from [[ELS Design Studios|http:/www.elsdesign.com]]\n<<<\n!!!!!Code\n***/\n// // +++[version]\n//{{{\nversion.extensions.exportTiddlers = {major: 2, minor: 1, revision: 2, date: new Date(2006,2,12)};\n//}}}\n// //===\n\n// // +++[macro handler]\n//{{{\nconfig.macros.exportTiddlers = {\n label: "export tiddlers",\n prompt: "Copy selected tiddlers to an export document",\n datetimefmt: "0MM/0DD/YYYY 0hh:0mm:0ss" // for "filter date/time" edit fields\n};\n\nconfig.macros.exportTiddlers.handler = function(place,macroName,params) {\n if (params[0]!="inline")\n { createTiddlyButton(place,this.label,this.prompt,onClickExportMenu); return; }\n var panel=createExportPanel(place);\n panel.style.position="static";\n panel.style.display="block";\n}\n\nfunction createExportPanel(place) {\n var panel=document.getElementById("exportPanel");\n if (panel) { panel.parentNode.removeChild(panel); }\n setStylesheet(config.macros.exportTiddlers.css,"exportTiddlers");\n panel=createTiddlyElement(place,"span","exportPanel",null,null)\n panel.innerHTML=config.macros.exportTiddlers.html;\n exportShowPanel(document.location.protocol);\n exportInitFilter();\n refreshExportList(0);\n store.addNotification(null,refreshExportList); // refresh listbox after every tiddler change\n return panel;\n}\n\nfunction onClickExportMenu(e)\n{\n if (!e) var e = window.event;\n var parent=resolveTarget(e).parentNode;\n var panel = document.getElementById("exportPanel");\n if (panel==undefined || panel.parentNode!=parent)\n panel=createExportPanel(parent);\n var isOpen = panel.style.display=="block";\n if(config.options.chkAnimate)\n anim.startAnimating(new Slider(panel,!isOpen,e.shiftKey || e.altKey,"none"));\n else\n panel.style.display = isOpen ? "none" : "block" ;\n e.cancelBubble = true;\n if (e.stopPropagation) e.stopPropagation();\n return(false);\n}\n//}}}\n// //===\n\n// // +++[Hijack saveChanges] diverts 'notFileUrlError' to display export control panel instead\n//{{{\nwindow.coreSaveChanges=window.saveChanges;\nwindow.saveChanges = function()\n{\n if (document.location.protocol=="file:") { coreSaveChanges(); return; }\n var e = window.event;\n var parent=e?resolveTarget(e).parentNode:document.body;\n var panel = document.getElementById("exportPanel");\n if (panel==undefined || panel.parentNode!=parent) panel=createExportPanel(parent);\n exportShowPanel(document.location.protocol);\n if (parent==document.body) { panel.style.left="30%"; panel.style.top="30%"; }\n panel.style.display = "block" ;\n}\n//}}}\n// //===\n\n// // +++[IE needs explicit scoping] for functions called by browser events\n//{{{\nwindow.onClickExportMenu=onClickExportMenu;\nwindow.onClickExportButton=onClickExportButton;\nwindow.exportShowPanel=exportShowPanel;\nwindow.exportShowFilterFields=exportShowFilterFields;\nwindow.refreshExportList=refreshExportList;\n//}}}\n// //===\n\n// // +++[CSS] for floating export control panel\n//{{{\nconfig.macros.exportTiddlers.css = '\s\n#exportPanel {\s\n display: none; position:absolute; z-index:12; width:35em; right:105%; top:6em;\s\n background-color: #eee; color:#000; font-size: 8pt; line-height:110%;\s\n border:1px solid black; border-bottom-width: 3px; border-right-width: 3px;\s\n padding: 0.5em; margin:0em; -moz-border-radius:1em;\s\n}\s\n#exportPanel a, #exportPanel td a { color:#009; display:inline; margin:0px; padding:1px; }\s\n#exportPanel table { width:100%; border:0px; padding:0px; margin:0px; font-size:8pt; line-height:110%; background:transparent; }\s\n#exportPanel tr { border:0px;padding:0px;margin:0px; background:transparent; }\s\n#exportPanel td { color:#000; border:0px;padding:0px;margin:0px; background:transparent; }\s\n#exportPanel select { width:98%;margin:0px;font-size:8pt;line-height:110%;}\s\n#exportPanel input { width:98%;padding:0px;margin:0px;font-size:8pt;line-height:110%}\s\n#exportPanel .box { border:1px solid black; padding:3px; margin-bottom:5px; background:#f8f8f8; -moz-border-radius:5px;}\s\n#exportPanel .topline { border-top:2px solid black; padding-top:3px; margin-bottom:5px; }\s\n#exportPanel .rad { width:auto; }\s\n#exportPanel .chk { width:auto; }\s\n#exportPanel .btn { width:auto; }\s\n#exportPanel .btn1 { width:98%; }\s\n#exportPanel .btn2 { width:48%; }\s\n#exportPanel .btn3 { width:32%; }\s\n#exportPanel .btn4 { width:24%; }\s\n#exportPanel .btn5 { width:19%; }\s\n';\n//}}}\n// //===\n\n// // +++[HTML] for export control panel interface\n//{{{\nconfig.macros.exportTiddlers.html = '\s\n<!-- output target and format -->\s\n<table cellpadding="0" cellspacing="0"><tr><td width=50%>\s\n export to\s\n <select size=1 id="exportTo" onchange="exportShowPanel(this.value);">\s\n <option value="file:" SELECTED>this computer</option>\s\n <option value="http:">web server (http)</option>\s\n <option value="https:">secure web server (https)</option>\s\n <option value="ftp:">file server (ftp)</option>\s\n </select>\s\n</td><td width=50%>\s\n output format\s\n <select id="exportFormat" size=1>\s\n <option value="DIV">TiddlyWiki export file</option>\s\n <option value="TW">TiddlyWiki document</option>\s\n <option value="XML">RSS feed (XML)</option>\s\n </select>\s\n</td></tr></table>\s\n\s\n<!-- export to local file -->\s\n<div id="exportLocalPanel" style="margin-bottom:5px;margin-top:5px;">\s\nlocal path/filename<br>\s\n<input type="file" id="exportFilename" size=56 style="width:100%"><br>\s\n</div><!--panel-->\s\n\s\n<!-- export to http server -->\s\n<div id="exportHTTPPanel" style="display:none;margin-bottom:5px;margin-top:5px;">\s\ndocument URL<br>\s\n<input type="text" id="exportHTTPSiteURL" onfocus="this.select()"><br>\s\nserver script / parameters<br>\s\n<input type="text" id="exportHTTPServerURL" onfocus="this.select()"><br>\s\n</div><!--panel-->\s\n\s\n<!-- export to ftp server -->\s\n<div id="exportFTPPanel" style="display:none;margin-bottom:5px;margin-top:5px;">\s\n<table cellpadding="0" cellspacing="0" width="33%"><tr valign="top"><td>\s\n host server<br>\s\n <input type="text" id="exportFTPHost" onfocus="this.select()"><br>\s\n</td><td width="33%">\s\n username<br>\s\n <input type="text" id="exportFTPID" onfocus="this.select()"><br>\s\n</td><td width="33%">\s\n password<br>\s\n <input type="password" id="exportFTPPW" onfocus="this.select()"><br>\s\n</td></tr></table>\s\nFTP path/filename<br>\s\n<input type="text" id="exportFTPFilename" onfocus="this.select()"><br>\s\n</div><!--panel-->\s\n\s\n<!-- list of tiddlers -->\s\n<table><tr align="left"><td>\s\n select:\s\n <a href="JavaScript:;" id="exportSelectAll"\s\n onclick="onClickExportButton(this)" title="select all tiddlers">\s\n &nbsp;all&nbsp;</a>\s\n <a href="JavaScript:;" id="exportSelectChanges"\s\n onclick="onClickExportButton(this)" title="select tiddlers changed since last save">\s\n &nbsp;changes&nbsp;</a> \s\n <a href="JavaScript:;" id="exportSelectOpened"\s\n onclick="onClickExportButton(this)" title="select tiddlers currently being displayed">\s\n &nbsp;opened&nbsp;</a> \s\n <a href="JavaScript:;" id="exportToggleFilter"\s\n onclick="onClickExportButton(this)" title="show/hide selection filter">\s\n &nbsp;filter&nbsp;</a> \s\n</td><td align="right">\s\n <a href="JavaScript:;" id="exportListSmaller"\s\n onclick="onClickExportButton(this)" title="reduce list size">\s\n &nbsp;&#150;&nbsp;</a>\s\n <a href="JavaScript:;" id="exportListLarger"\s\n onclick="onClickExportButton(this)" title="increase list size">\s\n &nbsp;+&nbsp;</a>\s\n</td></tr></table>\s\n<select id="exportList" multiple size="10" style="margin-bottom:5px;"\s\n onchange="refreshExportList(this.selectedIndex)">\s\n</select><br>\s\n\s\n<!-- selection filter -->\s\n<div id="exportFilterPanel" style="display:none">\s\n<table><tr align="left"><td>\s\n selection filter\s\n</td><td align="right">\s\n <a href="JavaScript:;" id="exportHideFilter"\s\n onclick="onClickExportButton(this)" title="hide selection filter">hide</a>\s\n</td></tr></table>\s\n<div class="box">\s\n<input type="checkbox" class="chk" id="exportFilterStart" value="1"\s\n onclick="exportShowFilterFields(this)"> starting date/time<br>\s\n<table cellpadding="0" cellspacing="0"><tr valign="center"><td width="50%">\s\n <select size=1 id="exportFilterStartBy" onchange="exportShowFilterFields(this);">\s\n <option value="0">today</option>\s\n <option value="1">yesterday</option>\s\n <option value="7">a week ago</option>\s\n <option value="30">a month ago</option>\s\n <option value="site">SiteDate</option>\s\n <option value="file">file date</option>\s\n <option value="other">other (mm/dd/yyyy hh:mm)</option>\s\n </select>\s\n</td><td width="50%">\s\n <input type="text" id="exportStartDate" onfocus="this.select()"\s\n onchange="document.getElementById(\s'exportFilterStartBy\s').value=\s'other\s';">\s\n</td></tr></table>\s\n<input type="checkbox" class="chk" id="exportFilterEnd" value="1"\s\n onclick="exportShowFilterFields(this)"> ending date/time<br>\s\n<table cellpadding="0" cellspacing="0"><tr valign="center"><td width="50%">\s\n <select size=1 id="exportFilterEndBy" onchange="exportShowFilterFields(this);">\s\n <option value="0">today</option>\s\n <option value="1">yesterday</option>\s\n <option value="7">a week ago</option>\s\n <option value="30">a month ago</option>\s\n <option value="site">SiteDate</option>\s\n <option value="file">file date</option>\s\n <option value="other">other (mm/dd/yyyy hh:mm)</option>\s\n </select>\s\n</td><td width="50%">\s\n <input type="text" id="exportEndDate" onfocus="this.select()"\s\n onchange="document.getElementById(\s'exportFilterEndBy\s').value=\s'other\s';">\s\n</td></tr></table>\s\n<input type="checkbox" class="chk" id=exportFilterTags value="1"\s\n onclick="exportShowFilterFields(this)"> match tags<br>\s\n<input type="text" id="exportTags" onfocus="this.select()">\s\n<input type="checkbox" class="chk" id=exportFilterText value="1"\s\n onclick="exportShowFilterFields(this)"> match titles/tiddler text<br>\s\n<input type="text" id="exportText" onfocus="this.select()">\s\n</div> <!--box-->\s\n</div> <!--panel-->\s\n\s\n<!-- action buttons -->\s\n<div style="text-align:center">\s\n<input type=button class="btn3" onclick="onClickExportButton(this)"\s\n id="exportFilter" value="apply filter">\s\n<input type=button class="btn3" onclick="onClickExportButton(this)"\s\n id="exportStart" value="export tiddlers">\s\n<input type=button class="btn3" onclick="onClickExportButton(this)"\s\n id="exportClose" value="close">\s\n</div><!--center-->\s\n';\n//}}}\n// //===\n\n// // +++[initialize interface]>\n// // +++[exportShowPanel(which)]\n//{{{\nfunction exportShowPanel(which) {\n var index=0; var panel='exportLocalPanel';\n switch (which) {\n case 'file:':\n case undefined:\n index=0; panel='exportLocalPanel'; break;\n case 'http:':\n index=1; panel='exportHTTPPanel'; break;\n case 'https:':\n index=2; panel='exportHTTPPanel'; break;\n case 'ftp:':\n index=3; panel='exportFTPPanel'; break;\n default:\n alert("Sorry, export to "+which+" is not yet available");\n break;\n }\n exportInitPanel(which);\n document.getElementById('exportTo').selectedIndex=index;\n document.getElementById('exportLocalPanel').style.display='none';\n document.getElementById('exportHTTPPanel').style.display='none';\n document.getElementById('exportFTPPanel').style.display='none';\n document.getElementById(panel).style.display='block';\n}\n//}}}\n// //===\n\n// // +++[exportInitPanel(which)]\n//{{{\nfunction exportInitPanel(which) {\n switch (which) {\n case "file:": // LOCAL EXPORT PANEL: file/path:\n // ** no init - security issues in IE **\n break;\n case "http:": // WEB EXPORT PANEL\n case "https:": // SECURE WEB EXPORT PANEL\n // url\n var siteURL=store.getTiddlerText("SiteUrl");\n if (store.tiddlerExists("unawiki_download")) {\n var theURL=store.getTiddlerText("unawiki_download");\n theURL=theURL.replace(/\s[\s[download\s|/,'').replace(/\s]\s]/,'');\n var title=(store.tiddlerExists("unawiki_host"))?"unawiki_host":"SiteHost";\n var theHost=store.getTiddlerText(title);\n if (!theHost || !theHost.length) theHost=document.location.host;\n if (!theHost || !theHost.length) theHost=title;\n siteURL=which+"//"+theHost+theURL\n }\n if (!siteURL) siteURL="SiteUrl";\n document.getElementById("exportHTTPSiteURL").value=siteURL;;\n // server script/params\n var title=(store.tiddlerExists("unawiki_host"))?"unawiki_host":"SiteHost";\n var theHost=store.getTiddlerText(title);\n if (!theHost || !theHost.length) theHost=document.location.host;\n if (!theHost || !theHost.length) theHost=title;\n // get POST\n var title=(store.tiddlerExists("unawiki_post"))?"unawiki_post":"SitePost";\n var thePost=store.getTiddlerText(title);\n if (!thePost || !thePost.length) thePost="/"+title;\n // get PARAMS\n var title=(store.tiddlerExists("unawiki_params"))?"unawiki_params":"SiteParams";\n var theParams=store.getTiddlerText(title);\n if (!theParams|| !theParams.length) theParams=title;\n var serverURL = which+"//"+theHost+thePost+"?"+theParams;\n document.getElementById("exportHTTPServerURL").value=serverURL;\n break;\n case "ftp:": // FTP EXPORT PANEL\n // host\n var siteHost=store.getTiddlerText("SiteHost");\n if (!siteHost || !siteHost.length) siteHost=document.location.host;\n if (!siteHost || !siteHost.length) siteHost="SiteHost";\n document.getElementById("exportFTPHost").value=siteHost;\n // username\n var siteID=store.getTiddlerText("SiteID");\n if (!siteID || !siteID.length) siteID=config.options.txtUserName;\n document.getElementById("exportFTPID").value=siteID;\n // password\n document.getElementById("exportFTPPW").value="";\n // file/path\n document.getElementById("exportFTPFilename").value="";\n break;\n }\n}\n//}}}\n// //===\n\n// // +++[exportInitFilter()]\n//{{{\nfunction exportInitFilter() {\n // TBD: persistent settings via local cookies\n // start date\n document.getElementById("exportFilterStart").checked=false;\n document.getElementById("exportStartDate").value="";\n // end date\n document.getElementById("exportFilterEnd").checked=false;\n document.getElementById("exportEndDate").value="";\n // tags\n document.getElementById("exportFilterTags").checked=false;\n document.getElementById("exportTags").value="not excludeExport";\n // text\n document.getElementById("exportFilterText").checked=false;\n document.getElementById("exportText").value="";\n // show/hide filter input fields\n exportShowFilterFields();\n}\n//}}}\n// //===\n\n// // +++[exportShowFilterFields(which)]\n//{{{\nfunction exportShowFilterFields(which) {\n var show;\n\n show=document.getElementById('exportFilterStart').checked;\n document.getElementById('exportFilterStartBy').style.display=show?"block":"none";\n document.getElementById('exportStartDate').style.display=show?"block":"none";\n var val=document.getElementById('exportFilterStartBy').value;\n document.getElementById('exportStartDate').value\n =getFilterDate(val,'exportStartDate').formatString(config.macros.exportTiddlers.datetimefmt);\n if (which && (which.id=='exportFilterStartBy') && (val=='other'))\n document.getElementById('exportStartDate').focus();\n\n show=document.getElementById('exportFilterEnd').checked;\n document.getElementById('exportFilterEndBy').style.display=show?"block":"none";\n document.getElementById('exportEndDate').style.display=show?"block":"none";\n var val=document.getElementById('exportFilterEndBy').value;\n document.getElementById('exportEndDate').value\n =getFilterDate(val,'exportEndDate').formatString(config.macros.exportTiddlers.datetimefmt);\n if (which && (which.id=='exportFilterEndBy') && (val=='other'))\n document.getElementById('exportEndDate').focus();\n\n show=document.getElementById('exportFilterTags').checked;\n document.getElementById('exportTags').style.display=show?"block":"none";\n\n show=document.getElementById('exportFilterText').checked;\n document.getElementById('exportText').style.display=show?"block":"none";\n}\n//}}}\n// //===\n// //===\n\n// // +++[onClickExportButton(which): control interactions]\n//{{{\nfunction onClickExportButton(which)\n{\n // DEBUG alert(which.id);\n var theList=document.getElementById('exportList'); if (!theList) return;\n var count = 0;\n var total = store.getTiddlers('title').length;\n switch (which.id)\n {\n case 'exportFilter':\n count=filterExportList();\n var panel=document.getElementById('exportFilterPanel');\n if (count==-1) { panel.style.display='block'; break; }\n theList.options[0].text=formatExportListHeader(count,total);\n document.getElementById("exportStart").disabled=(count==0);\n clearMessage(); displayMessage("filtered "+theList.options[0].text);\n if (count==0) { alert("No tiddlers were selected"); panel.style.display='block'; }\n break;\n case 'exportStart':\n exportTiddlers();\n break;\n case 'exportHideFilter':\n case 'exportToggleFilter':\n var panel=document.getElementById('exportFilterPanel')\n panel.style.display=(panel.style.display=='block')?'none':'block';\n break;\n case 'exportSelectChanges':\n var lastmod=new Date(document.lastModified);\n for (var t = 0; t < theList.options.length; t++) {\n if (theList.options[t].value=="") continue;\n var tiddler=store.getTiddler(theList.options[t].value); if (!tiddler) continue;\n theList.options[t].selected=(tiddler.modified>lastmod);\n count += (tiddler.modified>lastmod)?1:0;\n }\n theList.options[0].text=formatExportListHeader(count,total);\n document.getElementById("exportStart").disabled=(count==0);\n clearMessage(); displayMessage(theList.options[0].text);\n if (count==0) alert("There are no unsaved changes");\n break;\n case 'exportSelectAll':\n for (var t = 0; t < theList.options.length; t++) {\n if (theList.options[t].value=="") continue;\n theList.options[t].selected=true;\n count += 1;\n }\n theList.options[0].text=formatExportListHeader(count,count);\n document.getElementById("exportStart").disabled=(count==0);\n clearMessage(); displayMessage(theList.options[0].text);\n break;\n case 'exportSelectOpened':\n for (var t = 0; t < theList.options.length; t++) theList.options[t].selected=false;\n var tiddlerDisplay = document.getElementById("tiddlerDisplay");\n for (var t=0;t<tiddlerDisplay.childNodes.length;t++) {\n var tiddler=tiddlerDisplay.childNodes[t].id.substr(7);\n for (var i = 0; i < theList.options.length; i++) {\n if (theList.options[i].value!=tiddler) continue;\n theList.options[i].selected=true; count++; break;\n }\n }\n theList.options[0].text=formatExportListHeader(count,total);\n document.getElementById("exportStart").disabled=(count==0);\n clearMessage(); displayMessage(theList.options[0].text);\n if (count==0) alert("There are no tiddlers currently opened");\n break;\n case 'exportListSmaller': // decrease current listbox size\n var min=5;\n theList.size-=(theList.size>min)?1:0;\n break;\n case 'exportListLarger': // increase current listbox size\n var max=(theList.options.length>25)?theList.options.length:25;\n theList.size+=(theList.size<max)?1:0;\n break;\n case 'exportClose':\n document.getElementById('exportPanel').style.display='none';\n break;\n }\n}\n//}}}\n// //===\n\n// // +++[list display]\n//{{{\nfunction formatExportListHeader(count,total)\n{\n var txt=total+' tiddler'+((total!=1)?'s':'')+" - ";\n txt += (count==0)?"none":(count==total)?"all":count;\n txt += " selected for export";\n return txt;\n}\n\nfunction refreshExportList(selectedIndex)\n{\n var theList = document.getElementById("exportList");\n var sort;\n if (!theList) return;\n // get the sort order\n if (!selectedIndex) selectedIndex=0;\n if (selectedIndex==0) sort='modified';\n if (selectedIndex==1) sort='title';\n if (selectedIndex==2) sort='modified';\n if (selectedIndex==3) sort='modifier';\n\n // get the alphasorted list of tiddlers\n var tiddlers = store.getTiddlers('title');\n // unselect headings and count number of tiddlers actually selected\n var count=0;\n for (var i=0; i<theList.options.length; i++) {\n if (theList.options[i].value=="") theList.options[i].selected=false;\n count+=theList.options[i].selected?1:0;\n }\n // disable "export" button if no tiddlers selected\n document.getElementById("exportStart").disabled=(count==0);\n // update listbox heading to show selection count\n if (theList.options.length)\n theList.options[0].text=formatExportListHeader(count,tiddlers.length);\n\n // if a [command] item, reload list... otherwise, no further refresh needed\n if (selectedIndex>3) return;\n\n // clear current list contents\n while (theList.length > 0) { theList.options[0] = null; }\n // add heading and control items to list\n var i=0;\n var indent=String.fromCharCode(160)+String.fromCharCode(160);\n theList.options[i++]=\n new Option(formatExportListHeader(0,tiddlers.length), "",false,false);\n theList.options[i++]=\n new Option(((sort=="title" )?">":indent)+' [by title]', "",false,false);\n theList.options[i++]=\n new Option(((sort=="modified")?">":indent)+' [by date]', "",false,false);\n theList.options[i++]=\n new Option(((sort=="modifier")?">":indent)+' [by author]', "",false,false);\n // output the tiddler list\n switch(sort)\n {\n case "title":\n for(var t = 0; t < tiddlers.length; t++)\n theList.options[i++] = new Option(tiddlers[t].title,tiddlers[t].title,false,false);\n break;\n case "modifier":\n case "modified":\n var tiddlers = store.getTiddlers(sort);\n // sort descending for newest date first\n tiddlers.sort(function (a,b) {if(a[sort] == b[sort]) return(0); else return (a[sort] > b[sort]) ? -1 : +1; });\n var lastSection = "";\n for(var t = 0; t < tiddlers.length; t++)\n {\n var tiddler = tiddlers[t];\n var theSection = "";\n if (sort=="modified") theSection=tiddler.modified.toLocaleDateString();\n if (sort=="modifier") theSection=tiddler.modifier;\n if (theSection != lastSection)\n {\n theList.options[i++] = new Option(theSection,"",false,false);\n lastSection = theSection;\n }\n theList.options[i++] = new Option(indent+indent+tiddler.title,tiddler.title,false,false);\n }\n break;\n }\n theList.selectedIndex=selectedIndex; // select current control item\n}\n//}}}\n// //===\n\n// // +++[list filtering]\n//{{{\nfunction getFilterDate(val,id)\n{\n var result=0;\n switch (val) {\n case 'site':\n var timestamp=store.getTiddlerText("SiteDate");\n if (!timestamp) timestamp=document.lastModified;\n result=new Date(timestamp);\n break;\n case 'file':\n result=new Date(document.lastModified);\n break;\n case 'other':\n result=new Date(document.getElementById(id).value);\n break;\n default: // today=0, yesterday=1, one week=7, two weeks=14, a month=31\n var now=new Date(); var tz=now.getTimezoneOffset()*60000; now-=tz;\n var oneday=86400000;\n if (id=='exportStartDate')\n result=new Date((Math.floor(now/oneday)-val)*oneday+tz);\n else\n result=new Date((Math.floor(now/oneday)-val+1)*oneday+tz-1);\n break;\n }\n // DEBUG alert('getFilterDate('+val+','+id+')=='+result+"\snnow="+now);\n return result;\n}\n\nfunction filterExportList()\n{\n var theList = document.getElementById("exportList"); if (!theList) return -1;\n\n var filterStart=document.getElementById("exportFilterStart").checked;\n var val=document.getElementById("exportFilterStartBy").value;\n var startDate=getFilterDate(val,'exportStartDate');\n\n var filterEnd=document.getElementById("exportFilterEnd").checked;\n var val=document.getElementById("exportFilterEndBy").value;\n var endDate=getFilterDate(val,'exportEndDate');\n\n var filterTags=document.getElementById("exportFilterTags").checked;\n var tags=document.getElementById("exportTags").value;\n\n var filterText=document.getElementById("exportFilterText").checked;\n var text=document.getElementById("exportText").value;\n\n if (!(filterStart||filterEnd||filterTags||filterText)) {\n alert("Please set the selection filter");\n document.getElementById('exportFilterPanel').style.display="block";\n return -1;\n }\n if (filterStart&&filterEnd&&(startDate>endDate)) {\n var msg="starting date/time:\sn"\n msg+=startDate.toLocaleString()+"\sn";\n msg+="is later than ending date/time:\sn"\n msg+=endDate.toLocaleString()\n alert(msg);\n return -1;\n }\n\n // scan list and select tiddlers that match all applicable criteria\n var total=0;\n var count=0;\n for (var i=0; i<theList.options.length; i++) {\n // get item, skip non-tiddler list items (section headings)\n var opt=theList.options[i]; if (opt.value=="") continue;\n // get tiddler, skip missing tiddlers (this should NOT happen)\n var tiddler=store.getTiddler(opt.value); if (!tiddler) continue; \n var sel=true;\n if ( (filterStart && tiddler.modified<startDate)\n || (filterEnd && tiddler.modified>endDate)\n || (filterTags && !matchTags(tiddler,tags))\n || (filterText && (tiddler.text.indexOf(text)==-1) && (tiddler.title.indexOf(text)==-1)))\n sel=false;\n opt.selected=sel;\n count+=sel?1:0;\n total++;\n }\n return count;\n}\n//}}}\n\n//{{{\nfunction matchTags(tiddler,cond)\n{\n if (!cond||!cond.trim().length) return false;\n\n // build a regex of all tags as a big-old regex that \n // OR's the tags together (tag1|tag2|tag3...) in length order\n var tgs = store.getTags();\n if ( tgs.length == 0 ) return results ;\n var tags = tgs.sort( function(a,b){return (a[0].length<b[0].length)-(a[0].length>b[0].length);});\n var exp = "(" + tags.join("|") + ")" ;\n exp = exp.replace( /(,[\sd]+)/g, "" ) ;\n var regex = new RegExp( exp, "ig" );\n\n // build a string such that an expression that looks like this: tag1 AND tag2 OR NOT tag3\n // turns into : /tag1/.test(...) && /tag2/.test(...) || ! /tag2/.test(...)\n cond = cond.replace( regex, "/$1\s\s|/.test(tiddlerTags)" );\n cond = cond.replace( /\ssand\ss/ig, " && " ) ;\n cond = cond.replace( /\ssor\ss/ig, " || " ) ;\n cond = cond.replace( /\ss?not\ss/ig, " ! " ) ;\n\n // if a boolean uses a tag that doesn't exist - it will get left alone \n // (we only turn existing tags into actual tests).\n // replace anything that wasn't found as a tag, AND, OR, or NOT with the string "false"\n // if the tag doesn't exist then /tag/.test(...) will always return false.\n cond = cond.replace( /(\ss|^)+[^\s/\s|&!][^\ss]*/g, "false" ) ;\n\n // make a string of the tags in the tiddler and eval the 'cond' string against that string \n // if it's TRUE then the tiddler qualifies!\n var tiddlerTags = (tiddler.tags?tiddler.tags.join("|"):"")+"|" ;\n try { if ( eval( cond ) ) return true; }\n catch( e ) { displayMessage("Error in tag filter '" + e + "'" ); }\n return false;\n}\n//}}}\n// //===\n\n// // +++[output data formatting]>\n// // +++[exportHeader(format)]\n//{{{\nfunction exportHeader(format)\n{\n switch (format) {\n case "TW": return exportTWHeader();\n case "DIV": return exportDIVHeader();\n case "XML": return exportXMLHeader();\n }\n}\n//}}}\n// //===\n\n// // +++[exportFooter(format)]\n//{{{\nfunction exportFooter(format)\n{\n switch (format) {\n case "TW": return exportDIVFooter();\n case "DIV": return exportDIVFooter();\n case "XML": return exportXMLFooter();\n }\n}\n//}}}\n// //===\n\n// // +++[exportTWHeader()]\n//{{{\nfunction exportTWHeader()\n{\n // Get the URL of the document\n var originalPath = document.location.toString();\n // Check we were loaded from a file URL\n if(originalPath.substr(0,5) != "file:")\n { alert(config.messages.notFileUrlError); return; }\n // Remove any location part of the URL\n var hashPos = originalPath.indexOf("#"); if(hashPos != -1) originalPath = originalPath.substr(0,hashPos);\n // Convert to a native file format assuming\n // "file:///x:/path/path/path..." - pc local file --> "x:\spath\spath\spath..."\n // "file://///server/share/path/path/path..." - FireFox pc network file --> "\s\sserver\sshare\spath\spath\spath..."\n // "file:///path/path/path..." - mac/unix local file --> "/path/path/path..."\n // "file://server/share/path/path/path..." - pc network file --> "\s\sserver\sshare\spath\spath\spath..."\n var localPath;\n if(originalPath.charAt(9) == ":") // pc local file\n localPath = unescape(originalPath.substr(8)).replace(new RegExp("/","g"),"\s\s");\n else if(originalPath.indexOf("file://///") == 0) // FireFox pc network file\n localPath = "\s\s\s\s" + unescape(originalPath.substr(10)).replace(new RegExp("/","g"),"\s\s");\n else if(originalPath.indexOf("file:///") == 0) // mac/unix local file\n localPath = unescape(originalPath.substr(7));\n else if(originalPath.indexOf("file:/") == 0) // mac/unix local file\n localPath = unescape(originalPath.substr(5));\n else // pc network file\n localPath = "\s\s\s\s" + unescape(originalPath.substr(7)).replace(new RegExp("/","g"),"\s\s");\n // Load the original file\n var original = loadFile(localPath);\n if(original == null)\n { alert(config.messages.cantSaveError); return; }\n // Locate the storeArea div's\n var posOpeningDiv = original.indexOf(startSaveArea);\n var posClosingDiv = original.lastIndexOf(endSaveArea);\n if((posOpeningDiv == -1) || (posClosingDiv == -1))\n { alert(config.messages.invalidFileError.format([localPath])); return; }\n return original.substr(0,posOpeningDiv+startSaveArea.length)\n}\n//}}}\n// //===\n\n// // +++[exportDIVHeader()]\n//{{{\nfunction exportDIVHeader()\n{\n var out=[];\n var now = new Date();\n var u = store.getTiddlerText("SiteUrl",null);\n var title = wikifyPlain("SiteTitle").htmlEncode();\n var subtitle = wikifyPlain("SiteSubtitle").htmlEncode();\n var user = config.options.txtUserName.htmlEncode();\n var twver = version.major+"."+version.minor+"."+version.revision;\n var pver = version.extensions.exportTiddlers.major+"."\n +version.extensions.exportTiddlers.minor+"."+version.extensions.exportTiddlers.revision;\n out.push("<html><body>");\n out.push("<style type=\s"text/css\s">");\n out.push("#storeArea {display:block;margin:1em;}");\n out.push("#storeArea div");\n out.push("{padding:0.5em;margin:1em;border:2px solid black;height:10em;overflow:auto;}");\n out.push("#javascriptWarning");\n out.push("{width:100%;text-align:left;background-color:#eeeeee;padding:1em;}");\n out.push("</style>");\n out.push("<div id=\s"javascriptWarning\s">");\n out.push("TiddlyWiki export file<br>");\n out.push("Source: <b>"+document.location+"</b><br>");\n out.push("Title: <b>"+title+"</b><br>");\n out.push("Subtitle: <b>"+subtitle+"</b><br>");\n out.push("Created: <b>"+now.toLocaleString()+"</b> by <b>"+user+"</b><br>");\n out.push("TiddlyWiki "+twver+" / "+"ExportTiddlersPlugin "+pver+"<br>");\n out.push("</div>");\n out.push("<div id=\s"storeArea\s">");\n return out;\n}\n//}}}\n// //===\n\n// // +++[exportDIVFooter()]\n//{{{\nfunction exportDIVFooter()\n{\n var out=[];\n out.push("</div></body></html>");\n return out;\n}\n//}}}\n// //===\n\n// // +++[exportXMLHeader()]\n//{{{\nfunction exportXMLHeader()\n{\n var out=[];\n var now = new Date();\n var u = store.getTiddlerText("SiteUrl",null);\n var title = wikifyPlain("SiteTitle").htmlEncode();\n var subtitle = wikifyPlain("SiteSubtitle").htmlEncode();\n var user = config.options.txtUserName.htmlEncode();\n var twver = version.major+"."+version.minor+"."+version.revision;\n var pver = version.extensions.exportTiddlers.major+"."\n +version.extensions.exportTiddlers.minor+"."+version.extensions.exportTiddlers.revision;\n out.push("<" + "?xml version=\s"1.0\s"?" + ">");\n out.push("<rss version=\s"2.0\s">");\n out.push("<channel>");\n out.push("<title>" + title + "</title>");\n if(u) out.push("<link>" + u.htmlEncode() + "</link>");\n out.push("<description>" + subtitle + "</description>");\n out.push("<language>en-us</language>");\n out.push("<copyright>Copyright " + now.getFullYear() + " " + user + "</copyright>");\n out.push("<pubDate>" + now.toGMTString() + "</pubDate>");\n out.push("<lastBuildDate>" + now.toGMTString() + "</lastBuildDate>");\n out.push("<docs>http://blogs.law.harvard.edu/tech/rss</docs>");\n out.push("<generator>TiddlyWiki "+twver+" plus ExportTiddlersPlugin "+pver+"</generator>");\n return out;\n}\n//}}}\n// //===\n\n// // +++[exportXMLFooter()]\n//{{{\nfunction exportXMLFooter()\n{\n var out=[];\n out.push("</channel></rss>");\n return out;\n}\n//}}}\n// //===\n\n// // +++[exportData()]\n//{{{\nfunction exportData(theList,theFormat)\n{\n // scan export listbox and collect DIVs or XML for selected tiddler content\n var out=[];\n for (var i=0; i<theList.options.length; i++) {\n // get item, skip non-selected items and section headings\n var opt=theList.options[i]; if (!opt.selected||(opt.value=="")) continue;\n // get tiddler, skip missing tiddlers (this should NOT happen)\n var thisTiddler=store.getTiddler(opt.value); if (!thisTiddler) continue; \n if (theFormat=="TW") out.push(thisTiddler.saveToDiv());\n if (theFormat=="DIV") out.push(thisTiddler.title+"\sn"+thisTiddler.saveToDiv());\n if (theFormat=="XML") out.push(thisTiddler.saveToRss());\n }\n return out;\n}\n//}}}\n// //===\n// //===\n\n// // +++[exportTiddlers(): output selected data to local or server]\n//{{{\nfunction exportTiddlers()\n{\n var theList = document.getElementById("exportList"); if (!theList) return;\n\n // get the export settings\n var theProtocol = document.getElementById("exportTo").value;\n var theFormat = document.getElementById("exportFormat").value;\n\n // assemble output: header + tiddlers + footer\n var theData=exportData(theList,theFormat);\n var count=theData.length;\n var out=[]; var txt=out.concat(exportHeader(theFormat),theData,exportFooter(theFormat)).join("\sn");\n var msg="";\n switch (theProtocol) {\n case "file:":\n var theTarget = document.getElementById("exportFilename").value.trim();\n if (!theTarget.length) msg = "A local path/filename is required\sn";\n if (!msg && saveFile(theTarget,txt))\n msg=count+" tiddler"+((count!=1)?"s":"")+" exported to local file";\n else if (!msg)\n msg+="An error occurred while saving to "+theTarget;\n break;\n case "http:":\n case "https:":\n var theTarget = document.getElementById("exportHTTPServerURL").value.trim();\n if (!theTarget.length) msg = "A server URL is required\sn";\n if (!msg && exportPost(theTarget+encodeURIComponent(txt)))\n msg=count+" tiddler"+((count!=1)?"s":"")+" exported to "+theProtocol+" server";\n else if (!msg)\n msg+="An error occurred while saving to "+theTarget;\n break;\n case "ftp:":\n default:\n msg="Sorry, export to "+theLocation+" is not yet available";\n break;\n }\n clearMessage(); displayMessage(msg,theTarget);\n}\n//}}}\n// //===\n\n// // +++[exportPost(url): cross-domain post] uses hidden iframe to submit url and capture responses\n//{{{\nfunction exportPost(url)\n{\n var f=document.getElementById("exportFrame"); if (f) document.body.removeChild(f);\n f=document.createElement("iframe"); f.id="exportFrame";\n f.style.width="0px"; f.style.height="0px"; f.style.border="0px";\n document.body.appendChild(f);\n var d=f.document;\n if (f.contentDocument) d=f.contentDocument; // For NS6\n else if (f.contentWindow) d=f.contentWindow.document; // For IE5.5 and IE6\n d.location.replace(url);\n return true;\n}\n//}}}\n// //===\n
+++(gtdProjectsSliderState)[Projects]<<list tagged project>>===\n+++(gtdActionsSliderState)[Actions]<<list tagged context>>===\n+++(gtdReviewSliderState)[Review]\n*[[Project Review]]\n*[[Action Review]]\n*[[Reminders]]\n===\n+++(gtdJournalSliderState)[Journals]<<list tagged journal>>===\n\n<<newerTiddler button:"Create new project" name:"NewProject" tags:"project" template:"NewProjectTemplate">> <<newerTiddler button:"Create new context" name:"NewContext" tags:"context" template:"NewContextTemplate">>\n[[Reference]] [[Someday-Maybe]]\n+++[Calendar|Show a calendar]<<calendar thismonth>>===\n\n[[Configuration|Configuration]][[Configuration Options|Configuration Options]] [[Check for Updates|UpdateApplication]] [[Archives]]
/***\n''Name:'' GTDPlugins\n''Author:'' Tom Otvos\n''Version:'' <<gtdVersion>>\n\n''Macros:''\n*{{{<<gtdAction "}}}//title//{{{" "}}}//context list//{{{">>}}}\n*{{{<<gtdActionList {"}}}//context list//{{{" | "*" | "@" {"all"} }>>}}}\n** //if no parameters are specified, current context or project is used//\n** //specify "*" for actions across all projects, "@" for incomplete actions across all contexts (or "all" for all actions)//\n*{{{<<list tagged "}}}//tag list//{{{" {any | all}>>}}}\n** //if no parameters are specified, all tags are necessary//\n*{{{<<importUpdates "}}}//url//{{{" {updates | all} "}}}//buttonTitle//{{{" "}}}//buttonHelp//{{{" "}}}//importTiddlers params...//{{{">>}}}\n*{{{<<gtdArchive { archive | unarchive | purge }>>}}}\n\n''Commands:''\n*{{{newAction}}}\n*{{{newProjectAction}}}\n*{{{changeContext}}}\n*{{{deleteAction}}}\n*{{{deleteContext}}}\n*{{{deleteProject}}}\n*{{{deleteProjectAll}}}\n*{{{projectify}}}\n\n''Wiki formatting:''\n*{{{..new action title|context}}}\n\n***/\n//{{{\n\nversion.extensions.GTDPlugins = {major: 1, minor: 0, revision: 10, date: new Date(2006,4,26,0,0,0,0), source: "http://www.dcubed.ca/"};\n\nvar _GTD = {\n\n initialize: function ()\n {\n if (config.options.txtGTDReferenceContext == undefined) config.options.txtGTDReferenceContext = "reference";\n if (config.options.txtGTDSomedayContext == undefined) config.options.txtGTDSomedayContext = "someday";\n if (config.options.txtGTDUnfiledContext == undefined) config.options.txtGTDUnfiledContext = "unfiled";\n if (config.options.txtGTDActionAging == undefined) config.options.txtGTDActionAging = "";\n if (config.options.chkGTDFancyStyle == undefined) config.options.chkGTDFancyStyle = true;\n \n // some tricks to work when our script is loaded from an external file...\n if (!store) config.notifyTiddlers.push( {name: "GTDStyleSheet", notify: refreshStyles} );\n if (!store && config.options.chkGTDFancyStyle) config.notifyTiddlers.push( {name: "GTDTWStyleSheet", notify: refreshStyles} );\n if (!store) config.notifyTiddlers.push( {name: null, notify: _GTD.refreshActionViews} );\n if (!store) return;\n\n var tiddlers = [];\n tiddlers = tiddlers.concat(store.getTaggedTiddlers("project"), store.getTaggedTiddlers("context"), store.getTaggedTiddlers("action"));\n for (var i = 0; i < tiddlers.length; i++)\n tiddlers[i].changed();\n store.addNotification("GTDStyleSheet", refreshStyles);\n if (config.options.chkGTDFancyStyle) store.addNotification("GTDTWStyleSheet", refreshStyles);\n store.addNotification(null, _GTD.refreshActionViews);\n \n // force a display of release notes, if required\n var v = version.extensions.GTDPlugins;\n var releaseNotesTiddler = "About version " + v.major + '.' + v.minor + '.' + v.revision;\n if ((config.options.chkGTDReleaseNotes || config.options.chkGTDReleaseNotes == undefined) && store.tiddlerExists(releaseNotesTiddler)) {\n params = "open:\s"" + releaseNotesTiddler + "\s"";\n params = params.parseParams("open",null,false);\n config.options.chkGTDReleaseNotes = false;\n saveOptionCookie("chkGTDReleaseNotes");\n }\n },\n\n tiddlerHasTag: function (tiddler, tag)\n {\n if (typeof(tiddler) == "string") tiddler = store.getTiddler(tiddler);\n if (tiddler.tags.length == 0) return false;\n return (tiddler.tags.find(tag) != null);\n },\n \n tiddlerSwapTag: function (tiddler, oldTag, newTag)\n {\n for (var i = 0; i < tiddler.tags.length; i++)\n if (tiddler.tags[i] == oldTag) {\n tiddler.tags[i] = newTag;\n return true;\n }\n return false;\n },\n \n tiddlerHasChanged: function (tiddler, doSave)\n {\n tiddler.changed();\n //story.setDirty(tiddler.title, true);\n store.setDirty(true);\n if (doSave == undefined) doSave = true;\n if (config.options.chkAutoSave && doSave)\n saveChanges();\n },\n \n tiddlerAgeInDays: function(tiddler)\n {\n var now = new Date();\n return (now.getTime() - tiddler.modified.getTime()) / 1000 / 86400;\n },\n \n filteredActionTags: function (tags, filterTitle)\n {\n var actionTags = [];\n for (var i = 0; i < tags.length; i++)\n if (tags[i] != "action" && tags[i] != "done" && tags[i] != "floating" && tags[i] != filterTitle) actionTags.push(tags[i]);\n return actionTags;\n },\n \n toggleTag: function (tiddler, tag, toggle)\n {\n var tagIndex = -1;\n for (var i = 0; i < tiddler.tags.length; i++)\n if (tiddler.tags[i] == tag) {\n tagIndex = i;\n break;\n }\n \n if (toggle && tagIndex == -1) {\n tiddler.tags.push(tag);\n }\n else if (!toggle && tagIndex != -1) {\n tiddler.tags.splice(tagIndex, 1);\n }\n },\n \n refreshActionViews: function (tiddler)\n {\n if (tiddler) {\n if (typeof(tiddler) == "string") tiddler = store.getTiddler(tiddler);\n if (tiddler) {\n // do not do anything if we are not an action!\n if (!_GTD.tiddlerHasTag(tiddler, "action")) return;\n story.refreshTiddler(tiddler.title, null, true);\n for (var i = 0; i < tiddler.tags.length; i++)\n if (tiddler.tags[i] != "action" && tiddler.tags[i] != "done") {\n story.refreshTiddler(tiddler.tags[i], null, true);\n }\n }\n }\n \n var specialTiddlers = store.getTaggedTiddlers("review");\n for (var i = 0; i < specialTiddlers.length; i++)\n story.refreshTiddler(specialTiddlers[i].title, null, true);\n },\n \n appendProjectAction: function(projectTiddler, actionTitle, actionContext)\n {\n var actionInsertionPoint = -1, actionLeadin = "";\n \n var reActionWikitext = "^\s\s.{2}([^|\sn]+)(?:\s\s|?)(.*).*$";\n var reActionMacro = "(.*)<<gtdAction ((?:[^>]|(?:>(?!>)))*)>>.*$";\n var actionRe = new RegExp("(" + reActionWikitext + ")|(" + reActionMacro + ")", "mg");\n do {\n var formatMatch = actionRe.exec(projectTiddler.text);\n if (formatMatch) {\n actionLeadin = (formatMatch[1] ? "" : formatMatch[5]);\n actionInsertionPoint = actionRe.lastIndex;\n }\n } while(formatMatch);\n \n var actionProto = "\sn" + actionLeadin + "<<gtdAction \s"" + actionTitle + "\s" \s"" + actionContext + "\s">>";\n if (actionInsertionPoint == -1)\n projectTiddler.text += actionProto;\n else\n projectTiddler.text = projectTiddler.text.substring(0, actionInsertionPoint) + actionProto + projectTiddler.text.substr(actionInsertionPoint + 1);\n \n this.tiddlerHasChanged(projectTiddler);\n this.refreshActionViews(projectTiddler);\n },\n \n removeProjectAction: function(projectTiddler, actionTitle)\n {\n //var reActionWikitext = "^(\s\s.{2})(" + actionTitle + ")((\s\s|.*\sn)|(\sn))";\n var reActionWikitext = "^(\s\s.{2})(" + actionTitle + ")((\s\s|.*\sn?)|(.*\sn?))";\n var reActionMacro = "(.*<<gtdAction [\s"\s']?)(" + actionTitle + ")([\s"\s']?\s\ss+(?:[^>]|(?:>(?!>)))*>>.*\sn?)";\n projectTiddler.text = projectTiddler.text.replace(new RegExp(reActionWikitext, "mg"), "");\n projectTiddler.text = projectTiddler.text.replace(new RegExp(reActionMacro, "mg"), "");\n projectTiddler.changed();\n story.refreshTiddler(projectTiddler.title, null, true);\n },\n \n saveWithForcedBackup: function()\n {\n var saveBackups = config.options.chkSaveBackups;\n config.options.chkSaveBackups = true;\n saveChanges();\n config.options.chkSaveBackups = saveBackups;\n },\n \n isNextAction: function(actionTiddler)\n {\n if (actionTiddler.gtdProject && actionTiddler == actionTiddler.gtdProject.gtdNextAction)\n return true;\n return this.tiddlerHasTag(actionTiddler, "floating");\n }\n};\n\nconfig.macros.gtdVersion = {}\nconfig.macros.gtdVersion.handler = function(place)\n{\n var v = version.extensions.GTDPlugins;\n createTiddlyElement(place, "span", null, null, v.major + "." + v.minor + "." + v.revision + (v.beta ? " (beta " + v.beta + ")" : ""));\n}\n\nconfig.macros.list.tagged = {}\nconfig.macros.list.tagged.innerHandler = function(tagList, allTags)\n{\n var tiddlers = store.getTaggedTiddlers(tagList[0]);\n\n if (allTags) {\n var results = [];\n for (var i = 0; i < tiddlers.length; i++) {\n var tiddler = tiddlers[i], hasAllTags = true;\n for (var j = 1; hasAllTags && j < tagList.length; j++)\n hasAllTags &= _GTD.tiddlerHasTag(tiddler, tagList[j]);\n if (hasAllTags) results.push(tiddlers[i]);\n }\n return results;\n }\n else {\n for (var i = 1; i < tagList.length; i++) {\n var more = store.getTaggedTiddlers(tagList[i]);\n for (var j = 0; j < more.length; j++)\n tiddlers.pushUnique(more[j]);\n }\n return tiddlers;\n }\n}\nconfig.macros.list.tagged.handler = function(params) \n{\n var tags = params[1].readBracketedList();\n if (tags.length == 1) {\n if (config.options[tags[0]] == undefined)\n return store.getTaggedTiddlers(tags[0]);\n else\n return store.getTaggedTiddlers(config.options[tags[0]]);\n }\n else if (tags.length > 1) {\n var allTags = (params[2] == undefined || params[2] == 'all');\n var tiddlers = this.innerHandler(tags, allTags);\n tiddlers.sort(function (a,b) {if(a.title == b.title) return(0); else return (a.title < b.title) ? -1 : +1; });\n return tiddlers;\n }\n}\n\nconfig.macros.gtdAction = {}\nconfig.macros.gtdAction.createActionElement = function(place, actionTiddler, parentTiddler, tags)\n{\n if (typeof(actionTiddler) == "string") actionTiddler = store.getTiddler(actionTiddler);\n \n var actionElement = createTiddlyElement(place, "span", null, "gtdActionItem");\n // oddly, we barf when setting the checkbox type on an input if we use createTiddlyElement...\n var cb = document.createElement("input");\n cb.setAttribute("type", "checkbox");\n cb.setAttribute("actionTiddler", actionTiddler.title);\n cb.setAttribute("contextTiddler", parentTiddler);\n cb.onclick = this.onClickDone;\n actionElement.appendChild(cb);\n cb.checked = actionTiddler.gtdActionDone;\n createTiddlyLink(actionElement, actionTiddler.title, true);\n if (actionTiddler.gtdActionDone) actionElement.className = "gtdCompletedActionItem";\n if (_GTD.isNextAction(actionTiddler)) actionElement.className = "gtdNextActionItem";\n \n var actionTags = _GTD.filteredActionTags(tags, parentTiddler);\n //if (actionTags.length > 0) createTiddlyText(actionElement, " (" + actionTags.join(",") + ")");\n if (actionTags.length > 0) {\n createTiddlyText(actionElement, " [");\n for (var i = 0; i < actionTags.length; i++) {\n if (i > 0) createTiddlyText(actionElement, ", ");\n createTiddlyLink(actionElement, actionTags[i], true, "actionCrossReference");\n }\n createTiddlyText(actionElement, "]");\n }\n \n /*\n if (actionTiddler.gtdProject && actionTiddler.gtdProjectName != parentTiddler) {\n createTiddlyText(actionElement, " [");\n createTiddlyLink(actionElement, actionTiddler.gtdProjectName, true);\n createTiddlyText(actionElement, "]");\n }\n else {\n var actionTags = _GTD.filteredActionTags(tags, parentTiddler);\n if (actionTags.length > 0) createTiddlyText(actionElement, " (" + actionTags.join(",") + ")");\n }\n */\n \n return actionElement;\n}\n\nconfig.macros.gtdAction.onClickDone = function(e)\n{\n var tiddler = store.getTiddler(this.getAttribute("actionTiddler"));\n if (tiddler) {\n _GTD.toggleTag(tiddler, "done", this.checked);\n tiddler.gtdActionDone = this.checked;\n _GTD.tiddlerHasChanged(tiddler);\n _GTD.refreshActionViews(tiddler);\n }\n return true;\n}\n\nconfig.macros.gtdAction.handler = function(place,macroName,params)\n{\n var title = params[0], tags;\n var parentTiddler = story.findContainingTiddler(place).getAttribute("tiddler");\n var tiddler = store.getTiddler(title);\n if (!tiddler) {\n // we should *never* get here now for project actions, but keep code in case project code\n // trips up, or we use this macro somewhere else\n this.createAction(title, parentTiddler, params[1]);\n }\n else\n // use actual tiddler tags, not macro param, in case context changed!\n tags = tiddler.tags;\n var action = this.createActionElement(place, title, parentTiddler, tags);\n}\n\nconfig.macros.gtdAction.setNextAction = function(project)\n{\n project.gtdNextAction = null;\n for (var i = 0; i < project.gtdActions.length; i++)\n if (!project.gtdActions[i].gtdActionDone) {\n project.gtdNextAction = project.gtdActions[i];\n return;\n }\n}\n\nconfig.macros.gtdAction.createAction = function(title, parentTiddler, tagParams, extraTags)\n{\n var tags = ["action", parentTiddler];\n if (typeof(tagParams) == "string") tags = tags.concat(tagParams.readBracketedList());\n if (typeof(extraTags) == "string") tags = tags.concat(extraTags.readBracketedList());\n var templateText = store.getTiddlerText("NewActionTemplate", config.views.wikified.defaultText.format([title]));\n return store.saveTiddler(title, title, templateText, config.options.txtUserName, new Date(), tags);\n}\n\nconfig.macros.gtdActionCompleted = {}\nconfig.macros.gtdActionCompleted.handler = function(place,macroName,params)\n{\n var title = story.findContainingTiddler(place).getAttribute("tiddler");\n var tiddler = store.getTiddler(title);\n // oddly, we barf when setting the checkbox type on an input if we use createTiddlyElement...\n var cb = document.createElement("input");\n cb.setAttribute("type", "checkbox");\n cb.setAttribute("actionTiddler", title);\n cb.onclick = this.onClickDone;\n place.appendChild(cb);\n cb.checked = tiddler.gtdActionDone;\n}\n\nconfig.macros.gtdActionCompleted.onClickDone = function(e)\n{\n var tiddler = store.getTiddler(this.getAttribute("actionTiddler"));\n if (tiddler) {\n _GTD.toggleTag(tiddler, "done", this.checked);\n tiddler.gtdActionDone = this.checked;\n _GTD.tiddlerHasChanged(tiddler);\n _GTD.refreshActionViews(tiddler);\n }\n return true;\n}\n\nconfig.macros.gtdAction.inheritedChanged = Tiddler.prototype.changed;\nTiddler.prototype.changed = function()\n{\n config.macros.gtdAction.inheritedChanged();\n \n // Note that this is called both as part of normal tiddler changes AND as a part\n // of the initial TW loading process from DIVs...\n \n if (_GTD.tiddlerHasTag(this, "project")) {\n // (re)build the in-memory ordered action list\n this.gtdActions = [];\n this.gtdNextAction = null;\n if (this.text) {\n var reActionWikitext = "^\s\s.{2}([^|\sn]+)(?:\s\s|?)(.*)";\n var reActionMacro = "<<gtdAction ((?:[^>]|(?:>(?!>)))*)>>";\n var actionRe = new RegExp("(" + reActionWikitext + ")|(" + reActionMacro + ")", "mg");\n do {\n var formatMatch = actionRe.exec(this.text);\n if (formatMatch) {\n var macroParams = (formatMatch[1] ? null : formatMatch[5].readMacroParams());\n var actionTiddlerName = (formatMatch[1] ? formatMatch[2] : macroParams[0]);\n var actionTiddler = store.getTiddler(actionTiddlerName);\n if (!actionTiddler) {\n var actionTags = (formatMatch[1] ? formatMatch[3] : macroParams[1]);\n var extraTags = (formatMatch[1] ? '' : macroParams[2]);\n actionTiddler = config.macros.gtdAction.createAction(actionTiddlerName, this.title, actionTags, extraTags);\n }\n if (actionTiddler) {\n actionTiddler.gtdProject = this;\n if (this.gtdNextAction == null && !_GTD.tiddlerHasTag(actionTiddler, "done"))\n this.gtdNextAction = actionTiddler;\n this.gtdActions.push(actionTiddler);\n // handle project renaming in action\n if (actionTiddler.gtdProjectName && actionTiddler.gtdProjectName != this.title) {\n _GTD.tiddlerSwapTag(actionTiddler, actionTiddler.gtdProjectName, this.title);\n // action view won't get updated through any other refresh mechanism, so\n story.refreshTiddler(actionTiddler.title, null, true);\n }\n actionTiddler.gtdProjectName = this.title;\n }\n }\n } while(formatMatch);\n }\n }\n \n else if (_GTD.tiddlerHasTag(this, "context")) {\n if (this.gtdContextName == undefined)\n this.gtdContextName = this.title;\n else if (this.gtdContextName != this.title) {\n // propagate renamed context to affected actions\n var results = config.macros.list.tagged.innerHandler([ this.gtdContextName, "action"], true);\n for (var t = 0; t < results.length; t++) {\n _GTD.tiddlerSwapTag(results[t], this.gtdContextName, this.title);\n // action view won't get updated through any other refresh mechanism, so\n story.refreshTiddler(results[t].title, null, true);\n }\n this.gtdContextName = this.title;\n }\n }\n \n else if (_GTD.tiddlerHasTag(this, "action")) {\n if (this.gtdActionName == undefined)\n this.gtdActionName = this.title;\n else if (this.gtdActionName != this.title && this.gtdProject) {\n // ugh...dig into related project and update the wiki code to use new action name\n var reActionWikitext = "^(\s\s.{2})(" + this.gtdActionName + ")((\s\s|.*\sn)|(\sn))";\n var reActionMacro = "(<<gtdAction [\s"\s']?)(" + this.gtdActionName + ")([\s"\s']?\s\ss+(?:[^>]|(?:>(?!>)))*>>)";\n this.gtdProject.text = this.gtdProject.text.replace(new RegExp(reActionWikitext, "mg"), "$1" + this.title + "$3");\n this.gtdProject.text = this.gtdProject.text.replace(new RegExp(reActionMacro, "mg"), "$1" + this.title + "$3");\n this.gtdActionName = this.title;\n }\n this.gtdActionDone = _GTD.tiddlerHasTag(this, "done");\n // reset the next action on the associated project\n if (this.gtdProject) config.macros.gtdAction.setNextAction(this.gtdProject);\n }\n}\n\nconfig.formatters.push(\n {\n name: "gtdAction",\n match: "^\s\s.\s\s..*",\n lookahead: "^\s\s.\s\s.([^|]*)(?:\s\s|?)(.*)",\n handler: function(w)\n {\n var lookaheadRegExp = new RegExp(this.lookahead,"g");\n var lookaheadMatch = lookaheadRegExp.exec(w.matchText)\n if (lookaheadMatch) {\n var params = [ lookaheadMatch[1] ];\n if (lookaheadMatch[2].length > 0) params.push(lookaheadMatch[2]);\n config.macros.gtdAction.handler(w.output, "gtdAction", params);\n }\n }\n }\n);\n\nconfig.commands.newAction = { text: "action", tooltip: "Create a new action for this context", hideReadOnly: true };\nconfig.commands.newAction.handler = function(event, src, context)\n{\n var d = new Date();\n var newActionTitle = d.formatString("New Action hh:0mm:0ss");\n if (!store.tiddlerExists(newActionTitle)) {\n var tiddler = store.createTiddler(newActionTitle);\n var templateText = store.getTiddlerText("NewActionTemplate", config.views.wikified.defaultText.format([newActionTitle]));\n tiddler.assign(newActionTitle, templateText, config.options.txtUserName, new Date(), [ "action", context ]);\n \n story.displayTiddler(null, newActionTitle, DEFAULT_EDIT_TEMPLATE);\n story.focusTiddler(newActionTitle, "title");\n }\n return false;\n}\n\nconfig.commands.newProjectAction = { text: "action", tooltip: "Create a new action for this project", hideReadOnly: true };\nconfig.commands.newProjectAction.handler = function(event, src, project)\n{\n var d = new Date();\n var newActionTitle = d.formatString("New Action hh:0mm:0ss");\n if (!store.tiddlerExists(newActionTitle)) {\n var defaultContext = config.options.txtGTDUnfiledContext;\n _GTD.appendProjectAction(store.getTiddler(project), newActionTitle, defaultContext);\n \n var tiddler = store.createTiddler(newActionTitle);\n var templateText = store.getTiddlerText("NewActionTemplate", config.views.wikified.defaultText.format([newActionTitle]));\n tiddler.assign(newActionTitle, templateText, config.options.txtUserName, new Date(), [ "action", project, defaultContext ]);\n \n story.displayTiddler(null, newActionTitle, DEFAULT_EDIT_TEMPLATE);\n story.focusTiddler(newActionTitle, "title");\n }\n return false;\n}\n\nconfig.macros.gtdActionList = {}\nconfig.macros.gtdActionList.handler = function(place,macroName,params)\n{\n var theList = createTiddlyElement(place, "ul", null, "gtdActionList");\n var parentTiddler = story.findContainingTiddler(place).getAttribute("tiddler");\n var allActions = (params[1] == "all");\n var aging = parseInt(config.options.txtGTDActionAging, 10);\n aging = isNaN(aging) ? 0 : aging.clamp(0, Number.MAX_VALUE);\n \n if (params[0] == "*") { // actions for all projects\n var projects = store.getTaggedTiddlers("project");\n for (var i = 0; i < projects.length; i++) {\n var project = projects[i];\n if (!allActions) {\n var skipEmptyProject = true;\n if (project.gtdActions != undefined && project.gtdActions.length > 0)\n for (var k = 0; skipEmptyProject && k < project.gtdActions.length; k++)\n skipEmptyProject = project.gtdActions[k].gtdActionDone;\n if (skipEmptyProject) continue;\n }\n var theListItem = createTiddlyElement(theList, "li", null, "gtdActionListProject");\n createTiddlyLink(theListItem, project.title, true);\n if (project.gtdActions != undefined && project.gtdActions.length > 0) {\n var subList = createTiddlyElement(theList, "ul", null, "gtdActionList");\n for (var j = 0; j < project.gtdActions.length; j++) {\n var action = project.gtdActions[j];\n if (!allActions && aging > 0 && action.gtdActionDone && _GTD.tiddlerAgeInDays(action) > aging) continue;\n var subListItem = createTiddlyElement(subList, "li");\n var el = config.macros.gtdAction.createActionElement(subListItem, action, project.title, action.tags);\n }\n }\n }\n }\n else if (params[0] == "@") { // actions for all contexts\n var contexts = store.getTaggedTiddlers("context");\n for (var i = 0; i < contexts.length; i++) {\n var context = contexts[i];\n var actions = config.macros.list.tagged.innerHandler([context.title, "action"], true);\n if (actions.length > 0) {\n var firstAction = true, theListItem, subList;\n for (var j = 0; j < actions.length; j++) {\n var currentAction = actions[j];\n // if we are not displaying all actions, filter completed actions and non-next project actions\n if (!allActions && (currentAction.gtdActionDone || (currentAction.gtdProject && !_GTD.isNextAction(currentAction)))) continue;\n if (firstAction) {\n theListItem = createTiddlyElement(theList, "li", null, "gtdActionListContext");\n createTiddlyLink(theListItem, context.title, true);\n subList = createTiddlyElement(theList, "ul", null, "gtdActionList");\n firstAction = false;\n }\n var subListItem = createTiddlyElement(subList, "li");\n var el = config.macros.gtdAction.createActionElement(subListItem, currentAction, context.title, currentAction.tags);\n }\n }\n }\n }\n else { // actions tagged by current tiddler name\n // chain to our "tagged" list macro to get the tiddlers first\n var tags = (params.length == 0 ? [ parentTiddler ] : params[0].readBracketedList());\n tags.push("action");\n var results = config.macros.list.tagged.innerHandler(tags, true);\n // ??? do we want this list sorted by action name alone ???\n results.sort(function (a,b) {if(a.title == b.title) return(0); else return (a.title < b.title) ? -1 : +1; });\n for (var t = 0; t < results.length; t++) {\n var action = results[t];\n if (!allActions && aging > 0 && action.gtdActionDone && _GTD.tiddlerAgeInDays(action) > aging) continue;\n var theListItem = createTiddlyElement(theList, "li");\n var el = config.macros.gtdAction.createActionElement(theListItem, action, parentTiddler, action.tags);\n }\n }\n}\n\nconfig.commands.changeContext = { text: "context", tooltip: "Change context of this action", hideReadOnly: true, popupNone: "There are no contexts" };\nconfig.commands.changeContext.handler = function(event,src,title)\n{\n var popup = Popup.create(src);\n if (popup) {\n var contexts = store.getTaggedTiddlers("context");\n var tiddler = store.getTiddler(title);\n var c = false;\n var currentContext = config.options.txtGTDUnfiledContext;\n for (var i = 0; i < contexts.length; i++)\n if (_GTD.tiddlerHasTag(tiddler, contexts[i].title)) {\n currentContext = contexts[i].title;\n break;\n }\n \n for (i = 0; i < contexts.length; i++)\n if (contexts[i].title != currentContext) {\n var button = createTiddlyButton(createTiddlyElement(popup, "li"), contexts[i].title, '', this.onClickContext);\n button.setAttribute("actionTiddler", title);\n button.setAttribute("oldContext", currentContext);\n button.setAttribute("newContext", contexts[i].title);\n c = true;\n }\n if (!c)\n createTiddlyText(createTiddlyElement(popup, "li", null, "disabled"), this.popupNone);\n }\n \n Popup.show(popup, false);\n event.cancelBubble = true;\n if (event.stopPropagation) event.stopPropagation();\n // do *not* cause a browser navigation\n return false;\n}\n\nconfig.commands.changeContext.onClickContext = function(e)\n{\n var tiddler = store.getTiddler(this.getAttribute("actionTiddler"));\n if (tiddler) {\n var oldContext = this.getAttribute("oldContext");\n var newContext = this.getAttribute("newContext");\n if (_GTD.tiddlerSwapTag(tiddler, oldContext, newContext)) {\n _GTD.tiddlerHasChanged(tiddler);\n _GTD.refreshActionViews(tiddler);\n // be sure to refresh old context as well...\n story.refreshTiddler(oldContext, null, true);\n }\n }\n // do *not* cause a browser navigation\n return false;\n}\n\nconfig.commands.deleteAction = { text: "delete", tooltip: "Delete this action", hideReadOnly: true, warning: "Are you sure you want to delete '%0'?", altwarning: "Are you sure you want to delete '%0'? The action will also be removed from project '%1'." };\nconfig.commands.deleteAction.handler = function(event, src, title)\n{\n var tiddler = store.getTiddler(title);\n var ok = (tiddler.gtdProject ? confirm(this.altwarning.format([title, tiddler.gtdProject.title])) : confirm(this.warning.format([title])));\n if (ok) {\n if (tiddler.gtdProject) _GTD.removeProjectAction(tiddler.gtdProject, title);\n store.removeTiddler(title);\n story.closeTiddler(title,true,event.shiftKey || event.altKey);\n if(config.options.chkAutoSave)\n saveChanges();\n }\n \n return false;\n}\n\nconfig.commands.deleteContext = { text: "delete", tooltip: "Delete this context", hideReadOnly: true, warning: "Are you sure you want to delete '%0'? All associated actions will be tagged as 'unfiled'." };\nconfig.commands.deleteContext.handler = function(event, src, title)\n{\n if (confirm(this.warning.format([title]))) {\n store.suspendNotifications();\n this.unlinkActions(title);\n store.resumeNotifications();\n store.removeTiddler(title);\n story.closeTiddler(title,true,event.shiftKey || event.altKey);\n if(config.options.chkAutoSave)\n saveChanges();\n }\n \n return false;\n}\n\nconfig.commands.deleteContext.unlinkActions = function(contextTitle)\n{\n var tiddlers = config.macros.list.tagged.innerHandler([contextTitle, "action"], true);\n for (var i = 0; i < tiddlers.length; i++) {\n var tiddler = tiddlers[i];\n _GTD.tiddlerSwapTag(tiddler, contextTitle, config.options.txtGTDUnfiledContext);\n _GTD.tiddlerHasChanged(tiddler, false);\n // context removal will do view notification...\n }\n}\n\nconfig.commands.deleteProject = { text: "delete", tooltip: "Delete this project", hideReadOnly: true, warning: "Are you sure you want to delete '%0'? All associated actions will no longer be bound to this (or any) project." };\nconfig.commands.deleteProject.handler = function(event, src, title)\n{\n if (confirm(this.warning.format([title]))) {\n store.suspendNotifications();\n this.unlinkActions(title);\n store.resumeNotifications();\n store.removeTiddler(title);\n story.closeTiddler(title,true,event.shiftKey || event.altKey);\n if(config.options.chkAutoSave)\n saveChanges();\n }\n \n return false;\n}\n\nconfig.commands.deleteProject.unlinkActions = function(projectTitle)\n{\n var tiddlers = config.macros.list.tagged.innerHandler([projectTitle, "action"], true);\n for (var i = 0; i < tiddlers.length; i++) {\n var tiddler = tiddlers[i];\n tiddler.gtdProject = null;\n tiddler.tags.splice(tiddler.tags.find(projectTitle), 1);\n _GTD.tiddlerHasChanged(tiddler, false);\n // project removal will do view notification...\n }\n}\n\nconfig.commands.deleteProjectAll = { text: "delete all", tooltip: "Delete this project and its actions", hideReadOnly: true, warning: "Are you sure you want to delete '%0' and all its associated actions?" };\nconfig.commands.deleteProjectAll.handler = function(event, src, title)\n{\n if (confirm(this.warning.format([title]))) {\n store.suspendNotifications();\n this.deleteActions(title);\n store.resumeNotifications();\n store.removeTiddler(title);\n story.closeTiddler(title,true,event.shiftKey || event.altKey);\n if(config.options.chkAutoSave)\n saveChanges();\n }\n \n return false;\n}\n\nconfig.commands.deleteProjectAll.deleteActions = function(projectTitle)\n{\n var tiddlers = config.macros.list.tagged.innerHandler([projectTitle, "action"], true);\n for (var i = 0; i < tiddlers.length; i++) {\n var tiddler = tiddlers[i].title;\n store.removeTiddler(tiddler);\n story.closeTiddler(tiddler, true, false);\n // project removal will do view notification...\n }\n}\n\nconfig.commands.projectify = { text: "projectify", tooltip: "Convert this action to a project", hideReadOnly: true, warning: "Are you sure you want to convert '%0' to a project?" };\nconfig.commands.projectify.handler = function(event, src, title)\n{\n if (confirm(this.warning.format([title]))) {\n var tiddler = store.getTiddler(title);\n if (tiddler.gtdProject) _GTD.removeProjectAction(tiddler.gtdProject, title);\n tiddler.tags = [ "project" ];\n _GTD.tiddlerHasChanged(tiddler, true);\n // we need a broad notification here, not just refreshActionViews\n store.notify(title, true);\n }\n \n return false;\n}\n\nconfig.macros.touchRevision = {}\nconfig.macros.touchRevision.handler = function ()\n{\n var d = version.extensions.GTDPlugins.date;\n var tiddlers = config.macros.list.tagged.innerHandler(["systemConfig", "systemTiddler", "template", "gtd"], false);\n for (var i = 0; i < tiddlers.length; i++) {\n tiddlers[i].created = d;\n tiddlers[i].modified = d;\n }\n}\n\nStory.prototype.chooseTemplateForTiddler = function(title,template)\n{\n if (!template)\n template = DEFAULT_VIEW_TEMPLATE;\n\n // before reverting to default behaviour, check to see if a tag-based template exists\n if (template == DEFAULT_VIEW_TEMPLATE || template == DEFAULT_EDIT_TEMPLATE) {\n if (this.tagBasedTemplateCache == undefined) this.tagBasedTemplateCache = new Array();\n var templateRoot = (template == DEFAULT_VIEW_TEMPLATE ? "ViewTemplate" : "EditTemplate");\n var tiddler = store.getTiddler(title);\n if (tiddler) {\n for (var i = 0; i < tiddler.tags.length; i++) {\n var tag = tiddler.tags[i];\n var tagTemplate = tag + templateRoot;\n var tagCacheId = tag + template;\n // first check our cache to see if we have seen this template before\n if (this.tagBasedTemplateCache[tagCacheId] != undefined) {\n // make sure template still exists\n if (store.tiddlerExists(this.tagBasedTemplateCache[tagCacheId])) {\n template = this.tagBasedTemplateCache[tagCacheId];\n break;\n }\n else\n delete this.tagBasedTemplateCache[tagCacheId];\n }\n // go to the store to see if template exists\n if (store.tiddlerExists(tagTemplate)) {\n template = tagTemplate;\n this.tagBasedTemplateCache[tagCacheId] = tagTemplate;\n break;\n }\n }\n }\n }\n \n if (template == DEFAULT_VIEW_TEMPLATE || template == DEFAULT_EDIT_TEMPLATE)\n template = config.tiddlerTemplates[template];\n return template;\n}\n\nconfig.macros.importUpdates = { \n importMode: "updates",\n buttonTitle: "Update", \n buttonHelp: "Click here to update the application",\n preUpdateMessage: "Once the download is finished, you will need to reload your document to complete the update. In order to allow you to review the update tiddlers, this will not be done automatically. \sn\snClick \s"OK\s" start the update."\n}\nconfig.macros.importUpdates.handler = function(place, macroName, params)\n{\n var mode = params[1] ? params[1] : this.importMode;\n var title = params[2] ? params[2] : this.buttonTitle;\n var prompt = params[3] ? params[3] : this.buttonHelp;\n var button = createTiddlyButton(place, title, prompt, this.onClickUpdate);\n button.setAttribute("updateSource", params[0]);\n button.setAttribute("importMode", mode);\n if (params.length > 4) button.setAttribute("importExtras", params.slice(4).join(" "));\n}\n\nconfig.macros.importUpdates.onClickUpdate = function(e)\n{\n if (!confirm(config.macros.importUpdates.preUpdateMessage))\n return;\n var importParams = [ this.getAttribute("importMode"), this.getAttribute("updateSource") ];\n var importExtras = this.getAttribute("importExtras");\n if (importExtras) importParams = importParams.concat(importExtras.split(" "));\n importParams.push("force");\n // force a saveChanges with backup before the update\n _GTD.saveWithForcedBackup();\n // chain to the importTiddlers macro\n config.macros.importTiddlers.handler(this, "importTiddlers", importParams);\n // ensure that relevant release notes are displayed on first launch\n config.options.chkGTDReleaseNotes = true;\n saveOptionCookie("chkGTDReleaseNotes");\n // do *not* cause a browser navigation\n return false;\n}\n\nconfig.macros.gtdArchive = {}\nconfig.macros.gtdArchive.handler = function(place, macroName, params)\n{\n var archiveAction = params.length > 0 ? params[0] : "archive"\n var btn = createTiddlyButton(place, archiveAction, "", this.onClick);\n btn.setAttribute("archiveAction", archiveAction);\n}\n\nconfig.macros.gtdArchive.onClick = function(e)\n{\n var warning = "Are you sure you want to %0 all %1 projects and actions?";\n var status = "There were %0 project(s) and %1 action(s) %2d.";\n var archiveAction = this.getAttribute("archiveAction");\n \n var projectCount = 0, actionCount = 0;\n \n if (archiveAction == "archive") {\n if (confirm(warning.format([archiveAction, "completed"]))) {\n clearMessage();\n var projects = store.getTaggedTiddlers("project");\n for (var i = 0; i < projects.length; i++) {\n var project = projects[i];\n if (project.gtdActions == undefined || project.gtdActions.length == 0) continue;\n var projectComplete = true;\n for (var j = 0; projectComplete && j < project.gtdActions.length; j++)\n projectComplete = project.gtdActions[j].gtdActionDone;\n if (!projectComplete) continue;\n // if we get here, all project actions are done, so archive project\n story.closeTiddler(project.title, false, false);\n _GTD.tiddlerSwapTag(project, "project", "project-archive");\n _GTD.tiddlerHasChanged(project, false);\n projectCount++;\n for (j = 0; j < project.gtdActions.length; j++) {\n story.closeTiddler(project.gtdActions[j].title, false, false);\n _GTD.tiddlerSwapTag(project.gtdActions[j], "action", "action-archive");\n _GTD.tiddlerHasChanged(project.gtdActions[j], false);\n actionCount++;\n }\n }\n var actions = store.getTaggedTiddlers("action");\n for (i = 0; i < actions.length; i++) {\n var action = actions[i];\n if (action.gtdActionDone && !action.gtdProject) {\n story.closeTiddler(action.title, false, false);\n _GTD.tiddlerSwapTag(action, "action", "action-archive");\n _GTD.tiddlerHasChanged(action, false);\n actionCount++;\n }\n }\n displayMessage(status.format([projectCount, actionCount, archiveAction]));\n var saveClearMessage = clearMessage;\n clearMessage = function() {};\n if (config.options.chkAutoSave) saveChanges();\n clearMessage = saveClearMessage;\n store.notify(null, true);\n }\n }\n \n else if (archiveAction == "unarchive") {\n if (confirm(warning.format([archiveAction, "archived"]))) {\n clearMessage();\n var projects = store.getTaggedTiddlers("project-archive");\n for (var i = 0; i < projects.length; i++) {\n var project = projects[i];\n story.closeTiddler(project.title, false, false);\n _GTD.tiddlerSwapTag(project, "project-archive", "project");\n _GTD.tiddlerHasChanged(project, false);\n projectCount++;\n }\n var actions = store.getTaggedTiddlers("action-archive");\n for (i = 0; i < actions.length; i++) {\n var action = actions[i];\n story.closeTiddler(action.title, false, false);\n _GTD.tiddlerSwapTag(action, "action-archive", "action");\n _GTD.tiddlerHasChanged(action, false);\n actionCount++;\n }\n displayMessage(status.format([projectCount, actionCount, archiveAction]));\n var saveClearMessage = clearMessage;\n clearMessage = function() {};\n if (config.options.chkAutoSave) saveChanges();\n clearMessage = saveClearMessage;\n store.notify(null, true);\n }\n }\n \n else if (archiveAction == "purge") {\n if (confirm(warning.format([archiveAction, "archived"]))) {\n clearMessage();\n _GTD.saveWithForcedBackup();\n var projects = store.getTaggedTiddlers("project-archive");\n for (var i = 0; i < projects.length; i++) {\n var project = projects[i];\n story.closeTiddler(project.title, false, false);\n store.removeTiddler(project.title);\n projectCount++;\n }\n var actions = store.getTaggedTiddlers("action-archive");\n for (i = 0; i < actions.length; i++) {\n var action = actions[i];\n story.closeTiddler(action.title, false, false);\n store.removeTiddler(action.title);\n actionCount++;\n }\n displayMessage(status.format([projectCount, actionCount, archiveAction]));\n var saveClearMessage = clearMessage;\n clearMessage = function() {};\n if (config.options.chkAutoSave) saveChanges();\n clearMessage = saveClearMessage;\n store.notify(null, true);\n }\n }\n else\n alert("That archiving action is not supported");\n}\n\n_GTD.initialize();\n\n//}}}\n
/***\n!GTD specific styles\n***/\n\n/*{{{*/\n/* how annoying is that big header anyway?! */\n.headerForeground, .headerShadow {\n padding-top: 1em;\n}\n\n/* the tagging popup really gets in the way so push it off to the side */\n.tagging { float: right; }\n\n/* this unbullets actions in the actionList macro */\nul.gtdActionList { list-style-type: none; }\nli.gtdActionListProject, li.gtdActionListContext { margin-top: 1.0em; }\n\n.gtdCompletedActionItem { text-decoration: line-through; }\n.gtdNextActionItem { border-bottom: 1px dotted red; }\n\na.actionCrossReference { color: #ff8c00; }\n\n/* necessary bits copied from enhanced stylesheet to render properly without it */\n#mainMenu {\n font-size: 1em;\n text-align: left;\n width: 12em;\n}\n\n#mainMenu * {\n font-size: 1em;\n font-weight: normal;\n padding: 0; margin: 0; border: 0;\n}\n\n#mainMenu ul {\n list-style: none;\n margin-bottom: 10px;\n}\n\n#mainMenu li {\n text-indent: 1em;\n}\n\n#mainMenu a.button, #mainMenu a.tiddlyLink, #mainMenu a.externalLink {\n display: block; margin: 0; text-decoration: none;\n}\n\n/*}}}*/\n\n/***\n!Imported 3x5 printing styles\n//adapted from the work of Clint Checketts, http://www.checkettsweb.com/tw/gtd_tiddlywiki.htm //\n***/\n\n/*{{{*/\n\n@media print {\n#mainMenu, #sidebar, #messageArea {display: none !important;}\n#displayArea {margin: 1em 1em 0em 1em;}\n\n\n/* LAYOUT ELEMENTS ========================================================== */\n*\n{\n margin: 0;\n padding: 0;\n}\n\n#contentWrapper\n{\n margin: 0;\n width: 100%;\n position: static;\n}\n\nbody {\n background: #fff;\n color: #000;\n font-size: x-small;\n font-family: Georgia, "Lucida Grande", "Bitstream Vera Sans", Helvetica, Verdana, Arial, sans-serif;\n}\n\nimg {\n max-width: 2.2in;\n max-height: 4.3in;\n}\n\n#header, #side_container, #storeArea, #copyright, #floater, #messageArea, .save_accesskey, .site_description, #saveTest, .toolbar, .header, .footer, .tagging, .tagged\n{\n display: none;\n}\n\n#tiddlerDisplay, #displayArea\n{\n display: inline;\n}\n\n.tiddler {\n margin: 0 0 2em 0;\n border-top: 1px solid #000;\n page-break-before: always;\n}\n\n.tiddler:first-child {\n page-break-before: ;\n}\n\n.title {\n font-size: 1.6em;\n font-weight: bold;\n margin-bottom: .3em;\n padding: .2em 0;\n border-bottom: 1px dotted #000;\n}\n\np, blockquote, ul, li, ol, dt, dd, dl, table\n{\n margin: 0 0 .3em 0;\n}\n\nh1, h2, h3, h4, h5, h6\n{\n margin: .2em 0;\n} \n\nh1\n{\n font-size: 1.5em;\n}\n\nh2\n{\n font-size: 1.3em;\n}\n\nh3\n{\n font-size: 1.25em;\n}\n\nh4\n{\n font-size: 1.15em;\n}\n\nh5\n{\n font-size: 1.1em;\n}\n\nblockquote\n{\n margin: .6em;\n padding: .6em;\n border: 1px dotted #99AA99;\n font-size: xx-small;\n}\n\nul\n{\n list-style-type: circle;\n}\n\nli\n{\n margin: .1em 0 .1em 2em;\n line-height: 1.4em; \n}\n\ntable\n{\n border-collapse: collapse;\n font-size: 1em;\n}\n\ntd, th\n{\n border: 1px solid #999;\n padding: .2em;\n}\n\nhr {\n border: none;\n border-top: dotted 1px #777;\n height: 1px;\n color: #777;\n margin: .6em 0;\n}\n}\n/*}}}*/\n\n/***\n!Imported styles for calendar plugin\n***/\n\n/*{{{*/\n.calendar{\n border-bottom: 1px solid #99AA99;\n}\n\n.viewer .calendar{\n width: 220px;\n}\n\n#mainMenu .calendar{\n font-size: 8px;\n cursor: pointer;\n width: 100%;\n border: 0;\n border-collapse: collapse;\n}\n\n#mainMenu .calendar .button{\n border: 0;\n}\n\n#mainMenu .calendar td{\n font-size: 8pt;\n padding: 0;\n background: #fff;\n border: 0;\n}\n\n#mainMenu .calendar a{\n margin: 0;\n color: #000;\n background: transparent;\n}\n\n#mainMenu .calendar a:hover{\n color: #000;\n background: transparent;\n}\n\n#mainMenu .calendarMonthname,\n#mainMenu .calendar .calendarMonthTitle td a{\n color: #fff;\n background: #99AA99;\n}\n\n#mainMenu .calendarDaysOfWeek td{\n background: #99AA99;\n color: #fff;\n}\n/*}}}*/\n
/***\n!Layout Rules /%==============================================%/\n***/\n/*{{{*/\n\nbody {\n /* this is required for proper layout on IE, for some reason... */\n _position: static;\n}\n\n.tagClear {\n /* this, too, is a necessary IE hack... */\n _margin-top: 10em; \n _clear: both;\n}\n\n.headerForeground, .headerShadow {\n padding-top: 1em;\n}\n\n.tiddler {\n margin: 5px 0 5px 0;\n padding-bottom: 1em;\n}\n\n#mainMenu {\n width: 16em;\n font-size: 1em;\n text-align: left;\n padding-top: 0.5em;\n}\n\n#mainMenu * {\n font-size: 1em;\n font-weight: normal;\n padding: 0; margin: 0; border: 0;\n}\n\n#mainMenu ul {\n list-style: none;\n margin-bottom: 10px;\n}\n\n#mainMenu li {\n text-indent: 1em;\n}\n\n#mainMenu a.button, #mainMenu a.tiddlyLink, #mainMenu a.externalLink {\n display: block; margin: 0;\n}\n\n#displayArea {\n margin-left: 19em; margin-top: 0;\n}\n\n.toolbar .button {\n margin-left: 4px;\n}\n\n/*}}}*/\n\n/***\n!Generic Rules /%==============================================%/\n***/\n/*{{{*/\nbody {\n background: #FFFFFF;\n color: #000;\n}\n\nbody a, body a:hover {\n color: #005422;\n background: transparent;\n text-decoration: none;\n}\n\nh1,h2,h3,h4,h5 {\n color: #889988;\n background: #CCDDCC;\n padding:3px;\n}\n\n\n\n/*}}}*/\n/***\n!Header /%==================================================%/\n***/\n/*{{{*/\n.header {\n background: #889988;\n border-top: 1px solid #99AA99;\n border-bottom: 0px solid #667766;\n}\n\n.headerForeground {\n color: #667766;\n}\n\n.headerForeground a {\n font-weight: normal;\n color: #667766;\n}\n\n/* ??? what is up when you specify a site title colour in IE ??? */\n/* .siteTitle { color: red; } */\n\n/*}}}*/\n/***\n!General tabs /%=================================================%/\n***/\n/*{{{*/\n\n.tabSelected {\n color: #005422;\n background: #CCDDCC;\n border: none;\n}\n\n.tabUnselected {\n color: #FFFFFF;\n background: #667766;\n}\n\n.tabContents {\n color: #000;\n background: #CCDDCC;\n border: none;\n}\n\n.tabContents .listTitle {\n font-weight: bold;\n}\n\n.tabContents .button, .tabContents a {\n border: none;\n color: #005422;\n}\n\n.tabContents a:hover, .tabset a:hover {\n background: #667766;\n color: #FFFFFF;\n}\n\n/* make nested tab areas look different */\n.tabContents .tabSelected, .tabContents .tabContents {\n background: #99AA99;\n color: #FFFFFF;\n}\n\n.tabContents .tabContents {\n color: #eeb;\n}\n\n.tabContents .tabUnselected {\n color: #FFFFFF;\n}\n\n/*}}}*/\n/***\n!Main Menu /%=================================================%/\n***/\n/*{{{*/\n#mainMenu {\n background: #CCDDCC;\n color: #005422;\n border: 1px solid #667766;\n margin-top: 5px;\n}\n\n#mainMenu * {\n color: #005422;\n}\n\n#mainMenu a.button, #mainMenu a.tiddlyLink, #mainMenu a.externalLink {\n border: none;\n border-bottom: 0px solid #000;\n border-top: 0px solid #000;\n padding-left: 2px;\n}\n\n#mainMenu a:hover,\n#mainMenu a.button:hover {\n background-color: #667766;\n color: #FFFFFF;\n}\n\n/*}}}*/\n/***\n!Sidebar options /%=================================================%/\n~TiddlyLinks and buttons are treated identically in the sidebar and slider panel\n***/\n/*{{{*/\n#sidebar {\n color: #000;\n background: #99AA99;\n border-right: 0px solid #000;\n border-bottom: 0px solid #520;\n border: 1px solid #667766;\n margin-top: 5px;\n}\n\n#sidebarOptions .sliderPanel {\n background: #CCDDCC;\n}\n\n#sidebarOptions .sliderPanel a {\n border: 0px;\n color: #667766;\n}\n\n#sidebarOptions .sliderPanel a:hover {\n color: #FFFFFF;\n background: #667766;\n}\n\n#sidebarOptions .sliderPanel a:active {\n color: #667766;\n background: #FFFFFF;\n}\n\n#sidebarOptions a {\n color: #000000;\n border: none;\n}\n\n#sidebarOptions a:hover, #sidebarOptions a:active {\n color: #FFFFFF;\n background: #667766;\n}\n\n/*}}}*/\n/***\n!Message Area /%=================================================%/\n***/\n/*{{{*/\n#messageArea, #messageArea a {\n border-right: 0px solid #da1;\n border-bottom: 0px solid #a80;\n border: 0px;\n background: #CCDDCC;\n color: #000000;\n font-size: xx-small;\n text-decoration: none;\n}\n\n.messageToolbar .button a {\n background-color: transparent;\n text-decoration: none;\n border:none;\n}\n\n/*}}}*/\n/***\n!Popup /%=================================================%/\n***/\n/*{{{*/\n.popup {\n background: #CCDDCC;\n border: 0px;\n padding: 3px;\n font-size: xx-small;\n}\n\n.popup a {\n color: #005422;\n text-decoration: none;\n}\n\n.popup .button, .popup .button a {\n background-color: #CCDDCC;\n font-size: xx-small;\n color: #000000;\n text-decoration: none;\n}\n\n.popup hr {\n color: #000;\n}\n\n.popup li.disabled {\n color: #FF0000;\n background: #CCDDCC;\n}\n\n.popup li a, .popup li a:visited {\n color: #000000;\n border: 1px solid #667766;\n background: #CCDDCC;\n text-decoration: none;\n}\n\n.popup li a:hover {\n color: #000;\n border: 1px solid #007C35;\n background: #CCDDCC;\n text-decoration: none;\n}\n/*}}}*/\n/***\n!Tiddler Display /%=================================================%/\n***/\n/*{{{*/\n.tiddler {\n background: #F7FFF7;\n border: 1px solid #889988;\n}\n\n.title {\n color: #31AD49;\n}\n\n.toolbar {\n color: #000;\n margin-bottom: 10px;\n}\n\n.toolbar .button {\n background: #CCDDCC /*#cf6*/;\n border: 1px outset #CCDDCC /*#cf6*/;\n font-size: xx-small;\n}\n\n.toolbar .button:hover {\n background: #667766 /*#ef9*/;\n color: #fff;\n}\n\n.viewer a {\n text-decoration: none;\n border-bottom: 1px dotted #31AD49;\n}\n\n.tagged a, .tagged a:hover {\n background: transparent;\n}\n\n/*}}}*/\n
!!Getting Started with [[d3|http://dcubed.ca/]]\n\nFirst and foremost, you need a local copy of this file. You can use [[this link|http://infinite.tiddlyspot.com/download]] to download a copy, using whatever "Save this link" kind of interface is in your browser. \n\nNote that this system is built on the 2.0 release of TiddlyWiki, and no effort has been made to work with earlier versions (in case you were planning on copying this into your own existing TW document). Specifically, this document is currently using version ''<<version>>'' of TW.\n\nAdditionally, the system //relies on// a small number of plug-ins, all of which are installed here but that you would need to copy if you are integrating this into your own wiki:\n* GTDPlugins, version <<gtdVersion>>, the core set of new plug-ins created specifically for this solution\n* NewerTiddlerPlugin, to allow templated creation of tiddlers, with tags\n* NestedSlidersPlugin, for nicely managing the MainMenu\n* ReminderMacros, obviously\n* CalendarPlugin, because it is impossible to imagine a time-management solution without a calendar\n\nWe also include the very useful ImportTiddlersPlugin and ExportTiddlersPlugin to allow the system to be easily updated.\n\n!!Projects, contexts, actions, and tiddlers\nBefore getting into the meat of how to use this system, it is important to clearly understand the relationship between projects, contexts, and actions, and how they relate to tiddlers. Throughout this discussion, it is assumed that the basic TW and GTD terminology is already understood. Again, if you are new to TW, then please visit [[TiddlyWiki|http://www.tiddlywiki.com/]].\n\nAt the lowest level, we have ''actions'', which are simply " physical things to do". In this implementation, actions are first-class tiddlers, tagged as {{{action}}}. This is both good and bad. On the plus side, it makes action management very easy since we can use the full complement of tiddler-based functionality inside of TW and related plug-ins, and it allows you to save as much or as little extra information with the action as you like. On the minus side, it means that actions must have reasonably descriptive titles to avoid tiddler collision, because tiddler names inside a TW document must be unique: for example, you cannot have two projects with a "Kill Bill" action in the system. Also, without frequent archiving of completed actions, performance may be affected adversely as the system builds up action tiddlers.\n\n''Contexts'' are groups of related actions all intended to be doable in a particular location or, well, context. Contexts are also tiddlers, tagged as {{{context}}}, and for the most part the content of a context tiddler will simply be a dynamically generated list of actions that need to be done. An action should have precisely one context in GTD, although presently this implementation does not enforce that in any way since actions related to a context are simply tagged to the context.\n\n''Projects'' are groups of two or more actions which, when they are all completed, produce some desired outcome. Projects are tiddlers, tagged as {{{project}}}. The main distinguishing feature between a list of actions for a project and a list of actions for a context is that the project actions are ''ordered'', and at any point in time, there will only be a single ''next action''.\n\nNote that in this implementation, there is //no special naming// requirement for actions, contexts, and projects -- just tag them appropriately. By convention, you probably want to name your contexts "@computer", "@homedepot", etc., but you are not required to do so. Also, since project actions are directly tagged by the project name, you probably don't want to have super long project names -- it works, but doesn't look as nice when looking at tiddler and tag lists.\n\n!!Interface\nIf we now focus our attention on the MainMenu at left, you will see that it starts with two important menu items in which you will probably spend a lot of your time: Projects and Actions. These are //dynamically// populated lists that show active projects and action contexts, respectively. Both menu items use a slider interface to show/hide the lists, and they simply list all tiddlers that are tagged as {{{project}}} or {{{context}}}. Selecting an individual project or action context will, of course, then open the appropriate tiddler with its action list and other content. Note that these menu items are truly dynamic: updates to projects and contexts will immediately be reflected in these menus.\n\nNext in the menu are the equally important "review" tiddlers: [[Project Review]], [[Action Review]], and [[Reminders]]. The [[Project Review]] is a quick summary of all projects and their current and completed actions. Similarly, the [[Action Review]] shows all //incomplete// actions by context, and highlighting the "next action" per project appropriately. And the [[Reminders]] is a single page for viewing important reminders including: overdue (incomplete) actions, actions for today and tomorrow, and all action and non-action items that are coming up in the next week.\n\nThe "Create new project" and "Create new context" menu items allow you to easily create new projects and context tiddlers, tagged correctly. They rely on "template" tiddlers to provide their default content: [[NewProjectTemplate]] and [[NewContextTemplate]]. You can edit those tiddlers to change the way a new project or context looks if you don't like the default.\n\nFor completeness, the main menu also includes tiddlers for [[Reference]] and [[Someday-Maybe]] items. Both these tiddlers display lists of tiddlers tagged with certain keywords (that you can change using the [[Configuration Options]]). Of the two, the [[Reference]] tiddler it probably the least useful since you could consider the whole wiki a reference system and anything that is not a project, context, or action should be fair game as reference material. But it does illustrate how to create custom tiddlers with simple tag-based selection of items.\n\nThe Calendar menu item uses the popular TW [[CalendarPlugin]] to show a calendar, create date-based tiddlers and, in conjunction with the [[ReminderMacros]], show dates that have reminders on them. And the [[Configuration|Configuration Options]] menu item allows you to set a number of operational parameters in the system. [[Check for Updates|UpdateApplication]] enables you to always stay current with the core code that makes up this system (including ~TiddlyWiki itself). And finally [[Archives]] enables you to manage the archiving of completed projects and actions. \n\n!!Getting things done\nSo, how do we really "get things done"? At a minimum, create one or more contexts by clicking on "Create new context", giving it an appropriate name, and saving it. Then, while viewing a context, click on the ''action'' menu item in the context's tiddler menu. This creates a new action for that context. Name it, possibly add a description, save it and, bingo, it shows up in the context action list. Later, when you finish the action, check it off either from the context's action list, or using the checkbox next to the action title when you are viewing the action tiddler. That's it.\n\nWorking with project action lists is only slightly more involved since we want to describe the order in which actions are to be done a project. First, create a new project by clicking on "Create new project". Then, while ''editing'' the project tiddler, add the actions directly to the project using one of two wiki-text syntaxes (see the samples [[Fix scratch on car]] or [[Sample Project]]):\n{{{\n<<gtdAction "action title" "action context">>\n}}}\nor\n{{{\n..action title|action context\n}}}\n\nSaving the project will create new action tiddlers if they don't already exist and present a nice action list for you that you can then work from. Of course, any new actions will also be cross-posted to the appropriate context action lists and, if you happen to have the context list open, you would see the change immediately. It probably goes without saying, but if you want to change the order of actions or add new actions, simply edit the project and move things around as you see fit. Also, once the actions are created, you can always edit the action directly to add more information, rename it, or change its context (more on that later).\n\n//The major benefit to ensuring that project action list ordering is respected (by explicitly listing the actions) is that "next action" processing becomes automatic. You do ''not'' need to tag an action as "next" to make it next. It is next simply because all the other actions before it are done.// In all action lists, the "next action" is displayed (by the default StyleSheet) with a @@color(red):__red underline__@@. Note that starting with version 1.0.9, d-cubed supports the concept of "floating" actions, which are simply actions that do not have to be strictly next in the list to show up in the various action lists. While not strictly true to the GTD gospel, this is a popular feature in real-world use. To mark an action as floating, simply add the word "floating" after the action context in the {{{gtdAction}}} macro (you currently cannot use floating actions with the ".." notation).\n\nWhen entering project actions, the ".." notation is faster and easier to type but the catch is that the ".." must be the first characters on a line. This means you cannot use it in conjuction with other wiki notation, like "*" or "#". Ordinarily, this is not a problem because the actions will get rendered in a nice list but if you wanted to do your own list to, for example, use numbering or provide indentation for subproject actions, then you will need to use the {{{gtdAction}}} macro instead. The sample projects show examples of each.\n\nNow since you already know that actions are just tiddlers tagged with project and context, you might be tempted to create an action using the "new tiddler" command. This will, in fact, work if you want to create an action for a context without a project. But as you can probably guess, it will not work for a project action because the action must be listed in the project tiddler for the system to correctly maintain the ordering of actions. So it is probably best to get in the habit of not ever using "new tiddler" to create actions at all.\n\n!!More useful stuff\nWhen viewing actions, two additional menu items appear in the action's tiddler menu: ''context'' and ''projectify''. Clicking on ''context'' will allow you to select an alternate context for that action, which is useful if you have, for example, an @waiting context and an action has been partially done but you are now waiting for something or someone. Of course, changing the context on an action will immediately be reflected in all other tiddlers that are displaying that action. Note, however, that in project tiddlers where actions are explicitly listed out, the context in the wiki-text (the ".." or {{{gtdAction}}} macro) are not updated. This context can be considered //initial context// for the action when it is first created. While that may be confusing when you are editing a project, rest assured knowing that the system it correctly tracking the action context.\n\nThe ''projectify'' command in an action's tiddler menu will convert an existing action to a new project. This is very useful when you are refactoring your action list and decide that an action needs to be split into multiple steps.\n\nIn working with projects, contexts, and actions, you may occasionally want to rename or delete things. This, generally, works as you would expect. If you want to rename a project, context, or action, just edit the appropriate tiddler and the change will propagate throughout the system. Note, in particular, that if you rename an action that is part of a project, the underlying wiki text in the project tiddler will be updated with the new name!\n\nTo delete projects or contexts, simply select "delete" from the tiddler menu when editing the project or context. In the case of contexts, associated actions in the context will be marked with a special "unfiled" context. You should review actions tagged with "unfiled" and assign them to new contexts appropriately. In the case of projects, associated actions will be "unfiled" so that they will only be associated with their current context. The project tiddler menu has an additional "delete all" command that allows for a "deep" delete of a project. If you select this, the project //and all associated actions// will be deleted.\n\nDeleting action tiddlers just works. If the action is associated with a project, the project tiddler will be modified automatically and the action entry will be removed.\n\n!!TW customizations\nIn addition to the macros and wiki-syntax modifiers defined in GTDPlugins and the other external plug-ins, the GTDPlugins make a couple of key customizations to the way TW behaves to make for a more usable GTD system. While you don't need to //know// this to use the system, it might be of interest to more experienced TW users.\n\nFirst, we define an override to the way tiddlers are displayed to allow "tag-based templates". What this means, simply, is that when a tiddler is opened for viewing or editing, the tags of the tiddler are enumerated and, if a corresponding tiddler -- tag + "ViewTemplate" or tag + "EditTemplate" -- is found, it is used as a layout for the tiddler. In this implementation, the [[contextViewTemplate]] is used to add an additional "action" menu item when viewing (not editing) a context tiddler. This template and the [[projectViewTemplate]] also remove the "tagging" div because it is completely redundant to the main context and project content. Other templates provide additional commands where appropriate.\n\nSecond, because the MainMenu utilizes macros that create dynamic content, we need to do an important customization to the PageTemplate: the MainMenu DIV element needs to always update when tiddlers get saved, by adding a {{{force='true'}}} attribute on the element. This way, new projects and contexts show up in the menu immediately, as opposed to requiring the wiki to be reloaded. This is important to know if you are integrating this application into an existing TW document, since the PageTemplate tiddler is not a part of the application updates in order to preserve any other PageTemplate customizations you may already have in place (such as changing the header colour scheme).\n\nAnd third, we override the {{{changed}}} method of the {{{Tiddler}}} class to enable us to hook into tiddler saving...in particular, //project// tiddler saving...to allow the project action lists to be accurately maintained. This hook is also used to detect and process action and context renaming.\n\nThere are probably a few other tricks buried in the system, but we can't reveal //everything//!
/***\n''Import Tiddlers Plugin for TiddlyWiki version 1.2.x and 2.0''\n^^author: Eric Shulman - ELS Design Studios\nsource: http://www.TiddlyTools.com/#ImportTiddlersPlugin\nlicense: [[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]]^^\n\nWhen many people share and edit copies of the same TiddlyWiki document, the ability to quickly collect all these changes back into a single, updated document that can then be redistributed to the entire group is very important. This plugin lets you selectively combine tiddlers from any two TiddlyWiki documents. It can also be very useful when moving your own tiddlers from document to document (e.g., when upgrading to the latest version of TiddlyWiki, or 'pre-loading' your favorite stylesheets into a new 'empty' TiddlyWiki document.)\n\n!!!!!Inline interface (live)\n<<<\n<<importTiddlers inline>>\n<<<\n!!!!!Macro Syntax\n<<<\n{{{<<importTiddlers>>}}}\ncreates "import tiddlers" link. click to show/hide import control panel\n\n{{{<<importTiddlers inline>>}}}\ncreates import control panel directly in tiddler content\n\n{{{<<importTiddlers filter source quiet ask force>>}}}\nnon-interactive 'automatic' import.\n''filter'' determines which tiddlers will be automatically selected for importing. Use one of the following keywords:\n>''"new"'' retrieves only tiddlers that are found in the import source document, but do not yet exist in the destination document\n>''"changes"'' retrieves only tiddlers that exist in both documents for which the import source tiddler is newer than the existing tiddler\n>''"updates"'' retrieves both ''new'' and ''changed'' tiddlers (this is the default action when none is specified)\n>''"tiddler:~TiddlerName"'' retrieves only the specific tiddler named in the parameter.\n>''"all"'' retrieves ALL tiddlers from the import source document, even if they have not been changed.\n''source'' is the location of the imported document. It can be either a local document or an URL:\n>filename is any local path/file, in whatever format your system requires\n>URL is any remote web location that starts with "http://" or "https://"\n''"quiet"'' (optional)\n>supresses all status message during the import processing (e.g., "opening local file...", "found NN tiddlers..." etc). Note that if ANY tiddlers are actualy imported, a final information message will still be displayed (along with the ImportedTiddlers report), even when 'quiet' is specified. This ensures that changes to your document cannot occur without any visible indication at all.\n''"ask"'' (optional)\n>adds interactive confirmation. A browser message box (OK/Cancel) is displayed for each tiddler that will be imported, so that you can manually bypass any tiddlers that you do not want to import.\n''"force"'' (optional)\n>ignores the importReplace and importPublic special tags (see below). Allows automatic importing and overwriting of tiddlers even when they have not been tagged accordingly. This is intended for use with TW files for which you have complete control of the content and can therefore be certain that importing all tiddlers into your document is 'safe'.\n\n''Special tag values: importReplace and importPublic''\n\nBy adding these special tags to an existing tiddler, you can precisely control whether or not to allow updates to that tiddler as well as decide which tiddlers in your document can be automatically imported by others.\n*''For maximum safety, the default action is to prevent existing tiddlers from being unintentionally overwritten by incoming tiddlers.'' To allow an existing tiddler to be overwritten by an imported tiddler, you must tag the existing tiddler with ''<<tag importReplace>>''\n*''For maximum privacy, the default action for //outgoing// tiddlers is to NOT automatically share your tiddlers with others.'' To allow a tiddler in your document to be shared via auto-import actions by others, you must tag it with ''<<tag importPublic>>''\n//Note: these tags are only applied when using the auto-import processing. When using the interactive control panel, all tiddlers in the imported document are available in the listbox, regardless of their tag values.//\n<<<\n!!!!!Interactive Usage\n<<<\nWhen used interactively, a control panel is displayed consisting of an "import source document" filename input (text field plus a ''[Browse...]'' button), a listbox of available tiddlers, a "differences only" checkbox, an "add tags" input field and four push buttons: ''[open]'', ''[select all]'', ''[import]'' and ''[close]''.\n\nPress ''[browse]'' to select a TiddlyWiki document file to import. You can also type in the path/filename or a remote document URL (starting with http://)and press ''[open]''. //Note: There may be some delay to permit the browser time to access and load the document before updating the listbox with the titles of all tiddlers that are available to be imported.//\n\nSelect one or more titles from the listbox (hold CTRL or SHIFT while clicking to add/remove the highlight from individual list items). You can press ''[select all]'' to quickly highlight all tiddler titles in the list. Use the ''[-]'', ''[+]'', or ''[=]'' links to adjust the listbox size so you can view more (or less) tiddler titles at one time. When you have chosen the tiddlers you want to import and entered any extra tags, press ''[import]'' to begin copying them to the current TiddlyWiki document.\n\n''select: all, new, changes, or differences''\n\nYou can click on ''all'', ''new'', ''changes'', or ''differences'' to automatically select a subset of tiddlers from the list. This makes it very quick and easy to find and import just the updated tiddlers you are interested in:\n>''"all"'' selects ALL tiddlers from the import source document, even if they have not been changed.\n>''"new"'' selects only tiddlers that are found in the import source document, but do not yet exist in the destination document\n>''"changes"'' selects only tiddlers that exist in both documents but that are newer in the source document\n>''"differences"'' selects all new and existing tiddlers that are different from the destination document (even if destination tiddler is newer)\n\n''Import Tagging:''\n\nTiddlers that have been imported can be automatically tagged, so they will be easier to find later on, after they have been added to your document. New tags are entered into the "add tags" input field, and then //added// to the existing tags for each tiddler as it is imported.\n\n''Skip, Rename, Merge, or Replace:''\n\nWhen importing a tiddler whose title is identical to one that already exists, the import process pauses and the tiddler title is displayed in an input field, along with four push buttons: ''[skip]'', ''[rename]'', ''[merge]'' and ''[replace]''.\n\nTo bypass importing this tiddler, press ''[skip]''. To import the tiddler with a different name (so that both the tiddlers will exist when the import is done), enter a new title in the input field and then press ''[rename]''. Press ''[merge]'' to combine the content from both tiddlers into a single tiddler. Press ''[replace]'' to overwrite the existing tiddler with the imported one, discarding the previous tiddler content.\n\n//Note: if both the title ''and'' modification date/////time match, the imported tiddler is assumed to be identical to the existing one, and will be automatically skipped (i.e., not imported) without asking.//\n\n''Import Report History''\n\nWhen tiddlers are imported, a report is generated into ImportedTiddlers, indicating when the latest import was performed, the number of tiddlers successfully imported, from what location, and by whom. It also includes a list with the title, date and author of each tiddler that was imported.\n\nWhen the import process is completed, the ImportedTiddlers report is automatically displayed for your review. If more tiddlers are subsequently imported, a new report is //added// to ImportedTiddlers, above the previous report (i.e., at the top of the tiddler), so that a reverse-chronological history of imports is maintained.\n\nIf a cumulative record is not desired, the ImportedTiddlers report may be deleted at any time. A new ImportedTiddlers report will be created the next time tiddlers are imported.\n\nNote: You can prevent the ImportedTiddlers report from being generated for any given import activity by clearing the "create a report" checkbox before beginning the import processing.\n\n<<<\n!!!!!Installation\n<<<\ncopy/paste the following tiddlers into your document:\n''ImportTiddlersPlugin'' (tagged with <<tag systemConfig>>)\n\ncreate/edit ''SideBarOptions'': (sidebar menu items) \n^^Add "< < ImportTiddlers > >" macro^^\n\n''Quick Installation Tip #1:''\nIf you are using an unmodified version of TiddlyWiki (core release version <<version>>), you can get a new, empty TiddlyWiki with the Import Tiddlers plugin pre-installed (''[[download from here|TW+ImportExport.html]]''), and then simply import all your content from your old document into this new, empty document.\n<<<\n!!!!!Revision History\n<<<\n''2006.03.30 [2.9.1]''\nwhen extracting store area from remote URL, look for "</body>" instead of "</body>\sn</html>" so it will match even if the "\sn" is absent from the source.\n''2006.03.30 [2.9.0]''\nadded optional 'force' macro param. When present, autoImportTiddlers() bypasses the checks for importPublic and importReplace. Based on a request from Tom Otvos.\n''2006.03.28 [2.8.1]''\nin loadImportFile(), added checks to see if 'netscape' and 'x.overrideMimeType()' are defined (IE does *not* define these values, so we bypass this code)\nAlso, when extracting store area from remote URL, explicitly look for "</body>\sn</html>" to exclude any extra content that may have been added to the end of the file by hosting environments such as GeoCities. Thanks to Tom Otvos for finding these bugs and suggesting some fixes.\n''2006.02.21 [2.8.0]''\nadded support for "tiddler:TiddlerName" filtering parameter in auto-import processing\n''2006.02.21 [2.7.1]''\nClean up layout problems with IE. (Use tables for alignment instead of SPANs styled with float:left and float:right)\n''2006.02.21 [2.7.0]''\nAdded "local file" and "web server" radio buttons for selecting dynamic import source controls in ImportPanel. Default file control is replaced with URL text input field when "web server" is selected. Default remote document URL is defined in SiteURL tiddler. Also, added option for prepending SiteProxy URL as prefix to remote URL to mask cross-domain document access (requires compatible server-side script)\n''2006.02.17 [2.6.0]''\nRemoved "differences only" listbox display mode, replaced with selection filter 'presets': all/new/changes/differences. Also fixed initialization handling for "add new tags" so that checkbox state is correctly tracked when panel is first displayed.\n''2006.02.16 [2.5.4]''\nadded checkbox options to control "import remote tags" and "keep existing tags" behavior, in addition to existing "add new tags" functionality.\n''2006.02.14 [2.5.3]''\nFF1501 corrected unintended global 't' (loop index) in importReport() and autoImportTiddlers()\n''2006.02.10 [2.5.2]''\ncorrected unintended global variable in importReport().\n''2006.02.05 [2.5.1]''\nmoved globals from window.* to config.macros.importTiddlers.* to avoid FireFox 1.5.0.1 crash bug when referencing globals\n''2006.01.18 [2.5.0]''\nadded checkbox for "create a report". Default is to create/update the ImportedTiddlers report. Clear the checkbox to skip this step.\n''2006.01.15 [2.4.1]''\nadded "importPublic" tag and inverted default so that auto sharing is NOT done unless tagged with importPublic\n''2006.01.15 [2.4.0]''\nAdded support for tagging individual tiddlers with importSkip, importReplace, and/or importPrivate to control which tiddlers can be overwritten or shared with others when using auto-import macro syntax. Defaults are to SKIP overwriting existing tiddlers with imported tiddlers, and ALLOW your tiddlers to be auto-imported by others.\n''2006.01.15 [2.3.2]''\nAdded "ask" parameter to confirm each tiddler before importing (for use with auto-importing)\n''2006.01.15 [2.3.1]''\nStrip TW core scripts from import source content and load just the storeArea into the hidden IFRAME. Makes loading more efficient by reducing the document size and by preventing the import document from executing its TW initialization (including plugins). Seems to resolve the "Found 0 tiddlers" problem. Also, when importing local documents, use convertUTF8ToUnicode() to convert the file contents so support international characters sets.\n''2006.01.12 [2.3.0]''\nReorganized code to use callback function for loading import files to support event-driven I/O via an ASYNCHRONOUS XMLHttpRequest. Let's processing continue while waiting for remote hosts to respond to URL requests. Added non-interactive 'batch' macro mode, using parameters to specify which tiddlers to import, and from what document source. Improved error messages and diagnostics, plus an optional 'quiet' switch for batch mode to eliminate //most// feedback.\n''2006.01.11 [2.2.0]''\nAdded "[by tags]" to list of tiddlers, based on code submitted by BradleyMeck\n''2006.01.09 [2.1.1]''\nWhen a URL is typed in, and then the "open" button is pressed, it generates both an onChange event for the file input and a click event for open button. This results in multiple XMLHttpRequest()'s which seem to jam things up quite a bit. I removed the onChange handling for file input field. To open a file (local or URL), you must now explicitly press the "open" button in the control panel.\n''2006.01.08 [2.1.0]''\nIMPORT FROM ANYWHERE!!! re-write getImportedTiddlers() logic to either read a local file (using local I/O), OR... read a remote file, using a combination of XML and an iframe to permit cross-domain reading of DOM elements. Adapted from example code and techniques courtesy of Jonny LeRoy.\n''2006.01.06 [2.0.2]''\nWhen refreshing list contents, fixed check for tiddlerExists() when "show differences only" is selected, so that imported tiddlers that don't exist in the current file will be recognized as differences and included in the list.\n''2006.01.04 [2.0.1]''\nWhen "show differences only" is NOT checked, import all tiddlers that have been selected even when they have a matching title and date.\n''2005.12.27 [2.0.0]''\nUpdate for TW2.0\nDefer initial panel creation and only register a notification function when panel first is created\n''2005.12.22 [1.3.1]''\ntweak formatting in importReport() and add 'discard report' link to output\n''2005.12.03 [1.3.0]''\nDynamically create/remove importPanel as needed to ensure only one instance of interface elements exists, even if there are multiple instances of macro embedding. Also, dynamically create/recreate importFrame each time an external TW document is loaded for importation (reduces DOM overhead and ensures a 'fresh' frame for each document)\n''2005.11.29 [1.2.1]''\nfixed formatting of 'detail info' in importReport()\n''2005.11.11 [1.2.0]''\nadded 'inline' param to embed controls in a tiddler\n''2005.11.09 [1.1.0]''\nonly load HTML and CSS the first time the macro handler is called. Allows for redundant placement of the macro without creating multiple instances of controls with the same ID's.\n''2005.10.25 [1.0.5]''\nfixed typo in importReport() that prevented reports from being generated\n''2005.10.09 [1.0.4]''\ncombined documentation with plugin code instead of using separate tiddlers\n''2005.08.05 [1.0.3]''\nmoved CSS and HTML definitions into plugin code instead of using separate tiddlers\n''2005.07.27 [1.0.2]''\ncore update 1.2.29: custom overlayStyleSheet() replaced with new core setStylesheet()\n''2005.07.23 [1.0.1]''\nadded parameter checks and corrected addNotification() usage\n''2005.07.20 [1.0.0]''\nInitial Release\n<<<\n!!!!!Credits\n<<<\nThis feature was developed by EricShulman from [[ELS Design Studios|http:/www.elsdesign.com]]\n<<<\n!!!!!Code\n***/\n\n// // Version\n//{{{\nversion.extensions.importTiddlers = {major: 2, minor: 9, revision: 1, date: new Date(2006,3,30)};\n//}}}\n\n// // 1.2.x compatibility\n//{{{\nif (!window.story) window.story=window;\nif (!store.getTiddler) store.getTiddler=function(title){return store.tiddlers[title]}\nif (!store.addTiddler) store.addTiddler=function(tiddler){store.tiddlers[tiddler.title]=tiddler}\nif (!store.deleteTiddler) store.deleteTiddler=function(title){delete store.tiddlers[title]}\n//}}}\n\n// // IE needs explicit global scoping for functions/vars called from browser events\n//{{{\nwindow.onClickImportButton=onClickImportButton;\nwindow.loadImportFile=loadImportFile;\nwindow.refreshImportList=refreshImportList;\n//}}}\n\n// // default cookie/option values\n//{{{\nif (!config.options.chkImportReport) config.options.chkImportReport=true;\n//}}}\n\n\n// // ''MACRO DEFINITION''\n\n//{{{\nconfig.macros.importTiddlers = { };\nconfig.macros.importTiddlers = {\n label: "import tiddlers",\n prompt: "Copy tiddlers from another document",\n countMsg: "%0 tiddlers selected for import",\n src: "", // path/filename or URL of document to import (retrieved from SiteUrl tiddler)\n proxy: "", // URL for remote proxy script (retrieved from SiteProxy tiddler)\n useProxy: false, // use specific proxy script in front of remote URL\n inbound: null, // hash-indexed array of tiddlers from other document\n newTags: "", // text of tags added to imported tiddlers\n addTags: true, // add new tags to imported tiddlers\n listsize: 8, // # of lines to show in imported tiddler list\n importTags: true, // include tags from remote source document when importing a tiddler\n keepTags: true, // retain existing tags when replacing a tiddler\n index: 0, // current processing index in import list\n sort: "" // sort order for imported tiddler listbox\n};\n\nconfig.macros.importTiddlers.handler = function(place,macroName,params) {\n // LINK WITH FLOATING PANEL\n if (!params[0]) {\n createTiddlyButton(place,this.label,this.prompt,onClickImportMenu);\n return;\n }\n // INLINE TIDDLER CONTENT\n if (params[0]=="inline") {\n createImportPanel(place);\n document.getElementById("importPanel").style.position="static";\n document.getElementById("importPanel").style.display="block";\n return;\n }\n // NON-INTERACTIVE BATCH MODE\n switch (params[0].substr(0,7)) {\n case 'all':\n case 'new':\n case 'changes':\n case 'updates':\n case 'tiddler':\n var filter=params.shift();\n break;\n default:\n var filter="updates";\n break;\n } \n if (!params[0]||!params[0].length) return; // filename is required\n config.macros.importTiddlers.src=params.shift();\n var quiet=(params[0]=="quiet"); if (quiet) params.shift();\n var ask=(params[0]=="ask"); if (ask) params.shift();\n var force=(params[0]=="force"); if (force) params.shift();\n config.macros.importTiddlers.inbound=null; // clear the imported tiddler buffer\n // load storeArea from a hidden IFRAME, then apply import rules and add/replace tiddlers\n loadImportFile(config.macros.importTiddlers.src,filter,quiet,ask,force,autoImportTiddlers);\n}\n//}}}\n\n// // ''READ TIDDLERS FROM ANOTHER DOCUMENT''\n\n//{{{\nfunction loadImportFile(src,filter,quiet,ask,force,callback) {\n if (!quiet) clearMessage();\n // LOCAL FILE\n if ((src.substr(0,7)!="http://")&&(src.substr(0,8)!="https://")) {\n if (!quiet) displayMessage("Opening local document: "+ src);\n var txt=loadFile(src);\n if(!txt) { if (!quiet) displayMessage("Could not open local document: "+src); }\n else {\n var start=txt.indexOf('<div id="storeArea">');\n var end=txt.indexOf('</body>');\n var sa="<html><body>"+txt.substring(start,end)+"</body></html>";\n if (!quiet) displayMessage(txt.length+" bytes in document. ("+sa.length+" bytes used for tiddler storage)");\n config.macros.importTiddlers.inbound = readImportedTiddlers(convertUTF8ToUnicode(sa));\n var count=config.macros.importTiddlers.inbound?config.macros.importTiddlers.inbound.length:0;\n if (!quiet) displayMessage("Found "+count+" tiddlers in "+src);\n if (callback) callback(src,filter,quiet,ask,force);\n }\n return;\n }\n // REMOTE FILE\n var x; // XML object\n try {x = new XMLHttpRequest()}\n catch(e) {\n try {x = new ActiveXObject("Msxml2.XMLHTTP")}\n catch (e) {\n try {x = new ActiveXObject("Microsoft.XMLHTTP")}\n catch (e) { return }\n }\n }\n x.onreadystatechange = function() {\n if (x.readyState == 4) {\n if (x.status == 200) {\n var start=x.responseText.indexOf('<div id="storeArea">');\n var end=x.responseText.indexOf('</body>',start);\n var sa="<html><body>"+x.responseText.substring(start,end)+"</body></html>";\n if (!quiet) displayMessage(x.responseText.length+" bytes in document. ("+sa.length+" bytes used for tiddler storage)");\n config.macros.importTiddlers.inbound = readImportedTiddlers(sa);\n var count=config.macros.importTiddlers.inbound?config.macros.importTiddlers.inbound.length:0;\n if (!quiet) displayMessage("Found "+count+" tiddlers in "+src);\n if (callback) callback(src,filter,quiet,ask,force);\n }\n else\n if (!quiet) displayMessage("Could not open remote document:"+ src+" (error="+x.status+")");\n }\n }\n if ((document.location.protocol=="file:") && (typeof(netscape)!="undefined")) { // UniversalBrowserRead only works from a local file context\n try { netscape.security.PrivilegeManager.enablePrivilege('UniversalBrowserRead')}\n catch (e) { if (!quiet) displayMessage(e.description?e.description:e.toString()); }\n }\n if (config.macros.importTiddlers.useProxy) src=config.macros.importTiddlers.proxy+src;\n if (!quiet) displayMessage("Opening remote document: "+ src);\n try {\n var url=src+(src.indexOf('?')<0?'?':'&')+'nocache='+Math.random();\n x.open("GET",url,true);\n if (x.overrideMimeType) x.overrideMimeType('text/html');\n x.send(null);\n }\n catch (e) {\n if (!quiet) {\n displayMessage("Could not open remote document: "+src);\n displayMessage(e.description?e.description:e.toString());\n }\n }\n}\n\nfunction readImportedTiddlers(txt)\n{\n var importedTiddlers = [];\n // create frame\n var f=document.getElementById("importFrame");\n if (f) document.body.removeChild(f);\n f=document.createElement("iframe");\n f.id="importFrame";\n f.style.width="0px"; f.style.height="0px"; f.style.border="0px";\n document.body.appendChild(f);\n // get document\n var d=f.document;\n if (f.contentDocument) d=f.contentDocument; // For NS6\n else if (f.contentWindow) d=f.contentWindow.document; // For IE5.5 and IE6\n // load source into document\n d.open(); d.writeln(txt); d.close();\n // read tiddler DIVs from storeArea DOM element \n var importStore = [];\n var importStoreArea = d.getElementById("storeArea");\n if (!importStoreArea || !(importStore=importStoreArea.childNodes) || (importStore.length==0)) { return null; }\n importStoreArea.normalize();\n for(var t = 0; t < importStore.length; t++) {\n var e = importStore[t];\n var title = null;\n if(e.getAttribute)\n title = e.getAttribute("tiddler");\n if(!title && e.id && (e.id.substr(0,5) == "store"))\n title = e.id.substr(5);\n if(title && title != "") {\n var theImported = new Tiddler();\n theImported.loadFromDiv(e,title);\n importedTiddlers.push(theImported);\n }\n }\n return importedTiddlers;\n}\n//}}}\n\n// // ''NON-INTERACTIVE IMPORT''\n\n// // import all/new/changed tiddlers into store, replacing or adding tiddlers as needed\n//{{{\nfunction autoImportTiddlers(src,filter,quiet,ask,force)\n{\n var count=0;\n if (config.macros.importTiddlers.inbound) for (var t=0;t<config.macros.importTiddlers.inbound.length;t++) {\n var theImported = config.macros.importTiddlers.inbound[t];\n var theExisting = store.getTiddler(theImported.title);\n\n // only import tiddlers if tagged with "importPublic"\n if (!force && theImported.tags && theImported.tags.find("importPublic")==null)\n { config.macros.importTiddlers.inbound[t].status=""; continue; } // status=="" means don't show in report\n\n // never import the "ImportedTiddlers" history from the other document...\n if (theImported.title=='ImportedTiddlers')\n { config.macros.importTiddlers.inbound[t].status=""; continue; } // status=="" means don't show in report\n\n // check existing tiddler for importReplace, or systemConfig tags\n config.macros.importTiddlers.inbound[t].status="added"; // default - add any tiddlers not filtered out\n if (store.tiddlerExists(theImported.title)) {\n config.macros.importTiddlers.inbound[t].status="replaced";\n if (!force && (!theExisting.tags||(theExisting.tags.find("importReplace")==null)))\n { config.macros.importTiddlers.inbound[t].status="not imported - tiddler already exists (use importReplace to allow changes)"; continue; }\n if ((theExisting.tags.find("systemConfig")!=null)||(theImported.tags.find("systemConfig")!=null))\n config.macros.importTiddlers.inbound[t].status+=" - WARNING: an active systemConfig plugin has been added or updated";\n }\n\n // apply the all/new/changes/updates filter \n if (filter!="all") {\n if ((filter=="new") && store.tiddlerExists(theImported.title))\n { config.macros.importTiddlers.inbound[t].status="not imported - tiddler already exists"; continue; }\n if ((filter=="changes") && !store.tiddlerExists(theImported.title))\n { config.macros.importTiddlers.inbound[t].status="not imported - new tiddler"; continue; }\n if ((filter.substr(0,8)=="tiddler:") && theImported.title!=filter.substr(8))\n { config.macros.importTiddlers.inbound[t].status=""; continue; }\n if (store.tiddlerExists(theImported.title) && ((theExisting.modified.getTime()-theImported.modified.getTime())>=0))\n { config.macros.importTiddlers.inbound[t].status="not imported - tiddler is unchanged"; continue; }\n }\n\n // get confirmation if required\n if (ask && !confirm("Import "+(theExisting?"updated":"new")+" tiddler '"+theImported.title+"'\snfrom "+src))\n { config.macros.importTiddlers.inbound[t].status="skipped - cancelled by user"; continue; }\n\n // DO THE IMPORT!!\n store.addTiddler(theImported); count++;\n }\n importReport(quiet); // generate a report (as needed) and display it if not 'quiet'\n if (count) store.setDirty(true); \n // always show final message when tiddlers were actually imported\n if (!quiet||count) displayMessage("Imported "+count+" tiddler"+(count!=1?"s":"")+" from "+src);\n}\n//}}}\n\n// // ''REPORT GENERATOR''\n\n//{{{\nfunction importReport(quiet)\n{\n if (!config.macros.importTiddlers.inbound) return;\n // DEBUG alert('importReport: start');\n\n // if import was not completed, the Ask panel will still be open... close it now.\n var askpanel=document.getElementById('importAskPanel'); if (askpanel) askpanel.style.display='none'; \n // get the alphasorted list of tiddlers\n var tiddlers = config.macros.importTiddlers.inbound;\n tiddlers.sort(function (a,b) {if(a['title'] == b['title']) return(0); else return (a['title'] < b['title']) ? -1 : +1; });\n // gather the statistics\n var count=tiddlers.length;\n var added=0; var replaced=0; var renamed=0; var skipped=0; var merged=0;\n for (var t=0; t<count; t++)\n if (tiddlers[t].status)\n {\n if (tiddlers[t].status=='added') added++;\n if (tiddlers[t].status.substr(0,7)=='skipped') skipped++;\n if (tiddlers[t].status.substr(0,6)=='rename') renamed++;\n if (tiddlers[t].status.substr(0,7)=='replace') replaced++;\n if (tiddlers[t].status.substr(0,6)=='merged') merged++;\n }\n var omitted=count-(added+replaced+renamed+skipped+merged);\n // DEBUG alert('stats done: '+count+' total, '+added+' added, '+skipped+' skipped, '+renamed+' renamed, '+replaced+' replaced, '+merged+' merged');\n // skip the report if nothing was imported\n if (added+replaced+renamed+merged==0) return;\n // skip the report if not desired by user\n if (!config.options.chkImportReport) {\n // reset status flags\n for (var t=0; t<count; t++) config.macros.importTiddlers.inbound[t].status="";\n // refresh display since tiddlers have been imported\n store.notifyAll();\n // quick message area summary report\n var msg=(added+replaced+renamed+merged)+' of '+count+' tiddler'+((count!=1)?'s':"");\n msg+=' imported from '+config.macros.importTiddlers.src.replace(/\s\s/g,'/')\n displayMessage(msg);\n return;\n }\n // create the report tiddler (if not already present)\n var tiddler = store.getTiddler('ImportedTiddlers');\n if (!tiddler) // create new report tiddler if it doesn't exist\n {\n tiddler = new Tiddler();\n tiddler.title = 'ImportedTiddlers';\n tiddler.text = "";\n }\n // format the report header\n var now = new Date();\n var newText = "";\n newText += "On "+now.toLocaleString()+", "+config.options.txtUserName+" imported tiddlers from\sn";\n newText += "[["+config.macros.importTiddlers.src+"|"+config.macros.importTiddlers.src+"]]:\sn";\n newText += "<"+"<"+"<\sn";\n newText += "Out of "+count+" tiddler"+((count!=1)?"s ":" ")+" in {{{"+config.macros.importTiddlers.src.replace(/\s\s/g,'/')+"}}}:\sn";\n if (added+renamed>0)\n newText += (added+renamed)+" new tiddler"+(((added+renamed)!=1)?"s were":" was")+" added to your document.\sn";\n if (merged>0)\n newText += merged+" tiddler"+((merged!=1)?"s were":" was")+" merged with "+((merged!=1)?"":"an ")+"existing tiddler"+((merged!=1)?"s":"")+".\sn"; \n if (replaced>0)\n newText += replaced+" existing tiddler"+((replaced!=1)?"s were":" was")+" replaced.\sn"; \n if (skipped>0)\n newText += skipped+" tiddler"+((skipped!=1)?"s were":" was")+" skipped after asking.\sn"; \n if (omitted>0)\n newText += omitted+" tiddler"+((omitted!=1)?"s":"")+((omitted!=1)?" were":" was")+" not imported.\sn";\n if (config.macros.importTiddlers.addTags && config.macros.importTiddlers.newTags.trim().length)\n newText += "imported tiddlers were tagged with: \s""+config.macros.importTiddlers.newTags+"\s"\sn";\n // output the tiddler detail and reset status flags\n for (var t=0; t<count; t++)\n if (tiddlers[t].status!="")\n {\n newText += "#["+"["+tiddlers[t].title+"]"+"]";\n newText += ((tiddlers[t].status!="added")?("^^\sn"+tiddlers[t].status+"^^"):"")+"\sn";\n config.macros.importTiddlers.inbound[t].status="";\n }\n newText += "<"+"<"+"<\sn";\n // output 'discard report' link\n newText += "<html><input type=\s"button\s" href=\s"javascript:;\s" ";\n newText += "onclick=\s"story.closeTiddler('"+tiddler.title+"'); store.deleteTiddler('"+tiddler.title+"');\s" ";\n newText += "value=\s"discard report\s"></html>";\n // update the ImportedTiddlers content and show the tiddler\n tiddler.text = newText+((tiddler.text!="")?'\sn----\sn':"")+tiddler.text;\n tiddler.modifier = config.options.txtUserName;\n tiddler.modified = new Date();\n store.addTiddler(tiddler);\n if (!quiet) story.displayTiddler(null,"ImportedTiddlers",1,null,null,false);\n story.refreshTiddler("ImportedTiddlers",1,true);\n // refresh the display\n store.notifyAll();\n}\n//}}}\n\n// // ''INTERFACE DEFINITION''\n\n// // Handle link click to create/show/hide control panel\n//{{{\nfunction onClickImportMenu(e)\n{\n if (!e) var e = window.event;\n var parent=resolveTarget(e).parentNode;\n var panel = document.getElementById("importPanel");\n if (panel==undefined || panel.parentNode!=parent)\n panel=createImportPanel(parent);\n var isOpen = panel.style.display=="block";\n if(config.options.chkAnimate)\n anim.startAnimating(new Slider(panel,!isOpen,e.shiftKey || e.altKey,"none"));\n else\n panel.style.display = isOpen ? "none" : "block" ;\n e.cancelBubble = true;\n if (e.stopPropagation) e.stopPropagation();\n return(false);\n}\n//}}}\n\n// // Create control panel: HTML, CSS, register for notification\n//{{{\nfunction createImportPanel(place) {\n var panel=document.getElementById("importPanel");\n if (panel) { panel.parentNode.removeChild(panel); }\n setStylesheet(config.macros.importTiddlers.css,"importTiddlers");\n panel=createTiddlyElement(place,"span","importPanel",null,null)\n panel.innerHTML=config.macros.importTiddlers.html;\n store.addNotification(null,refreshImportList); // refresh listbox after every tiddler change\n refreshImportList();\n var siteURL=store.getTiddlerText("SiteUrl"); if (!siteURL) siteURL="";\n document.getElementById("importSourceURL").value=siteURL;\n config.macros.importTiddlers.src=siteURL;\n var siteProxy=store.getTiddlerText("SiteProxy"); if (!siteProxy) siteProxy="SiteProxy";\n document.getElementById("importSiteProxy").value=siteProxy;\n config.macros.importTiddlers.proxy=siteProxy;\n return panel;\n}\n//}}}\n\n// // CSS\n//{{{\nconfig.macros.importTiddlers.css = '\s\n#importPanel {\s\n display: none; position:absolute; z-index:11; width:35em; right:105%; top:3em;\s\n background-color: #eee; color:#000; font-size: 8pt; line-height:110%;\s\n border:1px solid black; border-bottom-width: 3px; border-right-width: 3px;\s\n padding: 0.5em; margin:0em; -moz-border-radius:1em;\s\n}\s\n#importPanel a, #importPanel td a { color:#009; display:inline; margin:0px; padding:1px; }\s\n#importPanel table { width:100%; border:0px; padding:0px; margin:0px; font-size:8pt; line-height:110%; background:transparent; }\s\n#importPanel tr { border:0px;padding:0px;margin:0px; background:transparent; }\s\n#importPanel td { color:#000; border:0px;padding:0px;margin:0px; background:transparent; }\s\n#importPanel select { width:98%;margin:0px;font-size:8pt;line-height:110%;}\s\n#importPanel input { width:98%;padding:0px;margin:0px;font-size:8pt;line-height:110%}\s\n#importPanel .box { border:1px solid black; padding:3px; margin-bottom:5px; background:#f8f8f8; -moz-border-radius:5px;}\s\n#importPanel .topline { border-top:2px solid black; padding-top:3px; margin-bottom:5px; }\s\n#importPanel .rad { width:auto; }\s\n#importPanel .chk { width:auto; margin:1px; }\s\n#importPanel .btn { width:auto; }\s\n#importPanel .btn1 { width:98%; }\s\n#importPanel .btn2 { width:48%; }\s\n#importPanel .btn3 { width:32%; }\s\n#importPanel .btn4 { width:24%; }\s\n#importPanel .btn5 { width:19%; }\s\n#importPanel .importButton { padding: 0em; margin: 0px; font-size:8pt; }\s\n#importPanel .importListButton { padding:0em 0.25em 0em 0.25em; color: #000000; display:inline }\s\n#importAskPanel { display:none; margin:0.5em 0em 0em 0em; }\s\n';\n//}}}\n\n// // HTML \n//{{{\nconfig.macros.importTiddlers.html = '\s\n<!-- source and report -->\s\n<table><tr><td align=left>\s\n import from\s\n <input type="radio" class="rad" name="importFrom" value="file" CHECKED\s\n onClick="document.getElementById(\s'importLocalPanel\s').style.display=this.checked?\s'block\s':\s'none\s';\s\n document.getElementById(\s'importHTTPPanel\s').style.display=!this.checked?\s'block\s':\s'none\s'"> local file\s\n <input type="radio" class="rad" name="importFrom" value="http"\s\n onClick="document.getElementById(\s'importLocalPanel\s').style.display=!this.checked?\s'block\s':\s'none\s';\s\n document.getElementById(\s'importHTTPPanel\s').style.display=this.checked?\s'block\s':\s'none\s'"> web server\s\n</td><td align=right>\s\n <input type=checkbox class="chk" id="chkImportReport" checked\s\n onClick="config.options[\s'chkImportReport\s']=this.checked;"> create a report\s\n</td></tr></table>\s\n<!-- import from local file -->\s\n<div id="importLocalPanel" style="display:block;margin-bottom:5px;margin-top:5px;padding-top:3px;border-top:1px solid #999">\s\nlocal document path/filename:<br>\s\n<input type="file" id="fileImportSource" size=57 style="width:100%"\s\n onKeyUp="config.macros.importTiddlers.src=this.value"\s\n onChange="config.macros.importTiddlers.src=this.value;">\s\n</div><!--panel-->\s\n\s\n<!-- import from http server -->\s\n<div id="importHTTPPanel" style="display:none;margin-bottom:5px;margin-top:5px;padding-top:3px;border-top:1px solid #999">\s\n<table><tr><td align=left>\s\n remote document URL:<br>\s\n</td><td align=right>\s\n <input type="checkbox" class="chk" id="importUseProxy"\s\n onClick="config.macros.importTiddlers.useProxy=this.checked;\s\n document.getElementById(\s'importSiteProxy\s').style.display=this.checked?\s'block\s':\s'none\s'"> use a proxy script\s\n</td></tr></table>\s\n<input type="text" id="importSiteProxy" style="display:none;margin-bottom:1px" onfocus="this.select()" value="SiteProxy"\s\n onKeyUp="config.macros.importTiddlers.proxy=this.value"\s\n onChange="config.macros.importTiddlers.proxy=this.value;">\s\n<input type="text" id="importSourceURL" onfocus="this.select()" value="SiteUrl"\s\n onKeyUp="config.macros.importTiddlers.src=this.value"\s\n onChange="config.macros.importTiddlers.src=this.value;">\s\n</div><!--panel-->\s\n\s\n<table><tr><td align=left>\s\n select:\s\n <a href="JavaScript:;" id="importSelectAll"\s\n onclick="onClickImportButton(this)" title="select all tiddlers">\s\n &nbsp;all&nbsp;</a>\s\n <a href="JavaScript:;" id="importSelectNew"\s\n onclick="onClickImportButton(this)" title="select tiddlers not already in destination document">\s\n &nbsp;added&nbsp;</a> \s\n <a href="JavaScript:;" id="importSelectChanges"\s\n onclick="onClickImportButton(this)" title="select tiddlers that have been updated in source document">\s\n &nbsp;changes&nbsp;</a> \s\n <a href="JavaScript:;" id="importSelectDifferences"\s\n onclick="onClickImportButton(this)" title="select tiddlers that have been added or are different from existing tiddlers">\s\n &nbsp;differences&nbsp;</a> \s\n <a href="JavaScript:;" id="importToggleFilter"\s\n onclick="onClickImportButton(this)" title="show/hide selection filter">\s\n &nbsp;filter&nbsp;</a> \s\n</td><td align=right>\s\n <a href="JavaScript:;" id="importListSmaller"\s\n onclick="onClickImportButton(this)" title="reduce list size">\s\n &nbsp;&#150;&nbsp;</a>\s\n <a href="JavaScript:;" id="importListLarger"\s\n onclick="onClickImportButton(this)" title="increase list size">\s\n &nbsp;+&nbsp;</a>\s\n <a href="JavaScript:;" id="importListMaximize"\s\n onclick="onClickImportButton(this)" title="maximize/restore list size">\s\n &nbsp;=&nbsp;</a>\s\n</td></tr></table>\s\n<select id="importList" size=8 multiple\s\n onchange="setTimeout(\s'refreshImportList(\s'+this.selectedIndex+\s')\s',1)">\s\n <!-- NOTE: delay refresh so list is updated AFTER onchange event is handled -->\s\n</select>\s\n<input type=checkbox class="chk" id="chkAddTags" checked\s\n onClick="config.macros.importTiddlers.addTags=this.checked;">add new tags &nbsp;\s\n<input type=checkbox class="chk" id="chkImportTags" checked\s\n onClick="config.macros.importTiddlers.importTags=this.checked;">import source tags &nbsp;\s\n<input type=checkbox class="chk" id="chkKeepTags" checked\s\n onClick="config.macros.importTiddlers.keepTags=this.checked;">keep existing tags<br>\s\n<input type=text id="txtNewTags" size=15 onKeyUp="config.macros.importTiddlers.newTags=this.value" autocomplete=off>\s\n<div align=center>\s\n <input type=button id="importOpen" class="importButton" style="width:32%" value="open"\s\n onclick="onClickImportButton(this)">\s\n <input type=button id="importStart" class="importButton" style="width:32%" value="import"\s\n onclick="onClickImportButton(this)">\s\n <input type=button id="importClose" class="importButton" style="width:32%" value="close"\s\n onclick="onClickImportButton(this)">\s\n</div>\s\n<div id="importAskPanel">\s\n tiddler already exists:\s\n <input type=text id="importNewTitle" size=15 autocomplete=off">\s\n <div align=center>\s\n <input type=button id="importSkip" class="importButton" style="width:23%" value="skip"\s\n onclick="onClickImportButton(this)">\s\n <input type=button id="importRename" class="importButton" style="width:23%" value="rename"\s\n onclick="onClickImportButton(this)">\s\n <input type=button id="importMerge" class="importButton" style="width:23%" value="merge"\s\n onclick="onClickImportButton(this)">\s\n <input type=button id="importReplace" class="importButton" style="width:23%" value="replace"\s\n onclick="onClickImportButton(this)">\s\n </div>\s\n</div>\s\n';\n//}}}\n\n// // refresh listbox\n//{{{\nfunction refreshImportList(selectedIndex)\n{\n var theList = document.getElementById("importList");\n if (!theList) return;\n // if nothing to show, reset list content and size\n if (!config.macros.importTiddlers.inbound) \n {\n while (theList.length > 0) { theList.options[0] = null; }\n theList.options[0]=new Option('please open a document...',"",false,false);\n theList.size=config.macros.importTiddlers.listsize;\n return;\n }\n // get the sort order\n if (!selectedIndex) selectedIndex=0;\n if (selectedIndex==0) config.macros.importTiddlers.sort='title'; // heading\n if (selectedIndex==1) config.macros.importTiddlers.sort='title';\n if (selectedIndex==2) config.macros.importTiddlers.sort='modified';\n if (selectedIndex==3) config.macros.importTiddlers.sort='tags';\n if (selectedIndex>3) {\n // display selected tiddler count\n for (var t=0,count=0; t < theList.options.length; t++) count+=(theList.options[t].selected&&theList.options[t].value!="")?1:0;\n clearMessage(); displayMessage(config.macros.importTiddlers.countMsg.format([count]));\n return; // no refresh needed\n }\n\n // get the alphasorted list of tiddlers (optionally, filter out unchanged tiddlers)\n var tiddlers=config.macros.importTiddlers.inbound;\n tiddlers.sort(function (a,b) {if(a['title'] == b['title']) return(0); else return (a['title'] < b['title']) ? -1 : +1; });\n // clear current list contents\n while (theList.length > 0) { theList.options[0] = null; }\n // add heading and control items to list\n var i=0;\n var indent=String.fromCharCode(160)+String.fromCharCode(160);\n theList.options[i++]=new Option(tiddlers.length+' tiddler'+((tiddlers.length!=1)?'s are':' is')+' in the document',"",false,false);\n theList.options[i++]=new Option(((config.macros.importTiddlers.sort=="title" )?">":indent)+' [by title]',"",false,false);\n theList.options[i++]=new Option(((config.macros.importTiddlers.sort=="modified")?">":indent)+' [by date]',"",false,false);\n theList.options[i++]=new Option(((config.macros.importTiddlers.sort=="tags")?">":indent)+' [by tags]',"",false,false);\n // output the tiddler list\n switch(config.macros.importTiddlers.sort)\n {\n case "title":\n for(var t = 0; t < tiddlers.length; t++)\n theList.options[i++] = new Option(tiddlers[t].title,tiddlers[t].title,false,false);\n break;\n case "modified":\n // sort descending for newest date first\n tiddlers.sort(function (a,b) {if(a['modified'] == b['modified']) return(0); else return (a['modified'] > b['modified']) ? -1 : +1; });\n var lastSection = "";\n for(var t = 0; t < tiddlers.length; t++) {\n var tiddler = tiddlers[t];\n var theSection = tiddler.modified.toLocaleDateString();\n if (theSection != lastSection) {\n theList.options[i++] = new Option(theSection,"",false,false);\n lastSection = theSection;\n }\n theList.options[i++] = new Option(indent+indent+tiddler.title,tiddler.title,false,false);\n }\n break;\n case "tags":\n var theTitles = {}; // all tiddler titles, hash indexed by tag value\n var theTags = new Array();\n for(var t=0; t<tiddlers.length; t++) {\n var title=tiddlers[t].title;\n var tags=tiddlers[t].tags;\n for(var s=0; s<tags.length; s++) {\n if (theTitles[tags[s]]==undefined) { theTags.push(tags[s]); theTitles[tags[s]]=new Array(); }\n theTitles[tags[s]].push(title);\n }\n }\n theTags.sort();\n for(var tagindex=0; tagindex<theTags.length; tagindex++) {\n var theTag=theTags[tagindex];\n theList.options[i++]=new Option(theTag,"",false,false);\n for(var t=0; t<theTitles[theTag].length; t++)\n theList.options[i++]=new Option(indent+indent+theTitles[theTag][t],theTitles[theTag][t],false,false);\n }\n break;\n }\n theList.selectedIndex=selectedIndex; // select current control item\n if (theList.size<config.macros.importTiddlers.listsize) theList.size=config.macros.importTiddlers.listsize;\n if (theList.size>theList.options.length) theList.size=theList.options.length;\n}\n//}}}\n\n// // Control interactions\n//{{{\nfunction onClickImportButton(which)\n{\n // DEBUG alert(which.id);\n var theList = document.getElementById('importList');\n if (!theList) return;\n var thePanel = document.getElementById('importPanel');\n var theAskPanel = document.getElementById('importAskPanel');\n var theNewTitle = document.getElementById('importNewTitle');\n var count=0;\n switch (which.id)\n {\n case 'fileImportSource':\n case 'importOpen': // load import source into hidden frame\n importReport(); // if an import was in progress, generate a report\n config.macros.importTiddlers.inbound=null; // clear the imported tiddler buffer\n refreshImportList(); // reset/resize the listbox\n if (config.macros.importTiddlers.src=="") break;\n // Load document into hidden iframe so we can read it's DOM and fill the list\n loadImportFile(config.macros.importTiddlers.src,"all",null,null,null,function(){window.refreshImportList(0);});\n break;\n case 'importSelectAll': // select all tiddler list items (i.e., not headings)\n importReport(); // if an import was in progress, generate a report\n for (var t=0,count=0; t < theList.options.length; t++) {\n if (theList.options[t].value=="") continue;\n theList.options[t].selected=true;\n count++;\n }\n clearMessage(); displayMessage(config.macros.importTiddlers.countMsg.format([count]));\n break;\n case 'importSelectNew': // select tiddlers not in current document\n importReport(); // if an import was in progress, generate a report\n for (var t=0,count=0; t < theList.options.length; t++) {\n theList.options[t].selected=false;\n if (theList.options[t].value=="") continue;\n theList.options[t].selected=!store.tiddlerExists(theList.options[t].value);\n count+=theList.options[t].selected?1:0;\n }\n clearMessage(); displayMessage(config.macros.importTiddlers.countMsg.format([count]));\n break;\n case 'importSelectChanges': // select tiddlers that are updated from existing tiddlers\n importReport(); // if an import was in progress, generate a report\n for (var t=0,count=0; t < theList.options.length; t++) {\n theList.options[t].selected=false;\n if (theList.options[t].value==""||!store.tiddlerExists(theList.options[t].value)) continue;\n for (var i=0; i<config.macros.importTiddlers.inbound.length; i++) // find matching inbound tiddler\n { var inbound=config.macros.importTiddlers.inbound[i]; if (inbound.title==theList.options[t].value) break; }\n theList.options[t].selected=(inbound.modified-store.getTiddler(theList.options[t].value).modified>0); // updated tiddler\n count+=theList.options[t].selected?1:0;\n }\n clearMessage(); displayMessage(config.macros.importTiddlers.countMsg.format([count]));\n break;\n case 'importSelectDifferences': // select tiddlers that are new or different from existing tiddlers\n importReport(); // if an import was in progress, generate a report\n for (var t=0,count=0; t < theList.options.length; t++) {\n theList.options[t].selected=false;\n if (theList.options[t].value=="") continue;\n if (!store.tiddlerExists(theList.options[t].value)) { theList.options[t].selected=true; count++; continue; }\n for (var i=0; i<config.macros.importTiddlers.inbound.length; i++) // find matching inbound tiddler\n { var inbound=config.macros.importTiddlers.inbound[i]; if (inbound.title==theList.options[t].value) break; }\n theList.options[t].selected=(inbound.modified-store.getTiddler(theList.options[t].value).modified!=0); // changed tiddler\n count+=theList.options[t].selected?1:0;\n }\n clearMessage(); displayMessage(config.macros.importTiddlers.countMsg.format([count]));\n break;\n case 'importToggleFilter': // show/hide filter\n case 'importFilter': // apply filter\n alert("coming soon!");\n break;\n case 'importStart': // initiate the import processing\n importReport(); // if an import was in progress, generate a report\n config.macros.importTiddlers.index=0;\n config.macros.importTiddlers.index=importTiddlers(0);\n importStopped();\n break;\n case 'importClose': // unload imported tiddlers or hide the import control panel\n // if imported tiddlers not loaded, close the import control panel\n if (!config.macros.importTiddlers.inbound) { thePanel.style.display='none'; break; }\n importReport(); // if an import was in progress, generate a report\n config.macros.importTiddlers.inbound=null; // clear the imported tiddler buffer\n refreshImportList(); // reset/resize the listbox\n break;\n case 'importSkip': // don't import the tiddler\n var theItem = theList.options[config.macros.importTiddlers.index];\n for (var j=0;j<config.macros.importTiddlers.inbound.length;j++)\n if (config.macros.importTiddlers.inbound[j].title==theItem.value) break;\n var theImported = config.macros.importTiddlers.inbound[j];\n theImported.status='skipped after asking'; // mark item as skipped\n theAskPanel.style.display='none';\n config.macros.importTiddlers.index=importTiddlers(config.macros.importTiddlers.index+1); // resume with NEXT item\n importStopped();\n break;\n case 'importRename': // change name of imported tiddler\n var theItem = theList.options[config.macros.importTiddlers.index];\n for (var j=0;j<config.macros.importTiddlers.inbound.length;j++)\n if (config.macros.importTiddlers.inbound[j].title==theItem.value) break;\n var theImported = config.macros.importTiddlers.inbound[j];\n theImported.status = 'renamed from '+theImported.title; // mark item as renamed\n theImported.set(theNewTitle.value,null,null,null,null); // change the tiddler title\n theItem.value = theNewTitle.value; // change the listbox item text\n theItem.text = theNewTitle.value; // change the listbox item text\n theAskPanel.style.display='none';\n config.macros.importTiddlers.index=importTiddlers(config.macros.importTiddlers.index); // resume with THIS item\n importStopped();\n break;\n case 'importMerge': // join existing and imported tiddler content\n var theItem = theList.options[config.macros.importTiddlers.index];\n for (var j=0;j<config.macros.importTiddlers.inbound.length;j++)\n if (config.macros.importTiddlers.inbound[j].title==theItem.value) break;\n var theImported = config.macros.importTiddlers.inbound[j];\n var theExisting = store.getTiddler(theItem.value);\n var theText = theExisting.text+'\sn----\sn^^merged from: [['+config.macros.importTiddlers.src+'#'+theItem.value+'|'+config.macros.importTiddlers.src+'#'+theItem.value+']]^^\sn^^'+theImported.modified.toLocaleString()+' by '+theImported.modifier+'^^\sn'+theImported.text;\n var theDate = new Date();\n var theTags = theExisting.getTags()+' '+theImported.getTags();\n theImported.set(null,theText,null,theDate,theTags);\n theImported.status = 'merged with '+theExisting.title; // mark item as merged\n theImported.status += ' - '+theExisting.modified.formatString("MM/DD/YYYY hh:mm:ss");\n theImported.status += ' by '+theExisting.modifier;\n theAskPanel.style.display='none';\n config.macros.importTiddlers.index=importTiddlers(config.macros.importTiddlers.index); // resume with this item\n importStopped();\n break;\n case 'importReplace': // substitute imported tiddler for existing tiddler\n var theItem = theList.options[config.macros.importTiddlers.index];\n for (var j=0;j<config.macros.importTiddlers.inbound.length;j++)\n if (config.macros.importTiddlers.inbound[j].title==theItem.value) break;\n var theImported = config.macros.importTiddlers.inbound[j];\n var theExisting = store.getTiddler(theItem.value);\n theImported.status = 'replaces '+theExisting.title; // mark item for replace\n theImported.status += ' - '+theExisting.modified.formatString("MM/DD/YYYY hh:mm:ss");\n theImported.status += ' by '+theExisting.modifier;\n theAskPanel.style.display='none';\n config.macros.importTiddlers.index=importTiddlers(config.macros.importTiddlers.index); // resume with THIS item\n importStopped();\n break;\n case 'importListSmaller': // decrease current listbox size, minimum=5\n if (theList.options.length==1) break;\n theList.size-=(theList.size>5)?1:0;\n config.macros.importTiddlers.listsize=theList.size;\n break;\n case 'importListLarger': // increase current listbox size, maximum=number of items in list\n if (theList.options.length==1) break;\n theList.size+=(theList.size<theList.options.length)?1:0;\n config.macros.importTiddlers.listsize=theList.size;\n break;\n case 'importListMaximize': // toggle listbox size between current and maximum\n if (theList.options.length==1) break;\n theList.size=(theList.size==theList.options.length)?config.macros.importTiddlers.listsize:theList.options.length;\n break;\n }\n}\n//}}}\n\n// // re-entrant processing for handling import with interactive collision prompting\n//{{{\nfunction importTiddlers(startIndex)\n{\n if (!config.macros.importTiddlers.inbound) return -1;\n\n var theList = document.getElementById('importList');\n if (!theList) return;\n var t;\n // if starting new import, reset import status flags\n if (startIndex==0)\n for (var t=0;t<config.macros.importTiddlers.inbound.length;t++)\n config.macros.importTiddlers.inbound[t].status="";\n for (var i=startIndex; i<theList.options.length; i++)\n {\n // if list item is not selected or is a heading (i.e., has no value), skip it\n if ((!theList.options[i].selected) || ((t=theList.options[i].value)==""))\n continue;\n for (var j=0;j<config.macros.importTiddlers.inbound.length;j++)\n if (config.macros.importTiddlers.inbound[j].title==t) break;\n var theImported = config.macros.importTiddlers.inbound[j];\n var theExisting = store.getTiddler(theImported.title);\n // avoid redundant import for tiddlers that are listed multiple times (when 'by tags')\n if (theImported.status=="added")\n continue;\n // don't import the "ImportedTiddlers" history from the other document...\n if (theImported.title=='ImportedTiddlers')\n continue;\n // if tiddler exists and import not marked for replace or merge, stop importing\n if (theExisting && (theImported.status.substr(0,7)!="replace") && (theImported.status.substr(0,5)!="merge"))\n return i;\n // assemble tags (remote + existing + added)\n var newTags = "";\n if (config.macros.importTiddlers.importTags)\n newTags+=theImported.getTags() // import remote tags\n if (config.macros.importTiddlers.keepTags && theExisting)\n newTags+=" "+theExisting.getTags(); // keep existing tags\n if (config.macros.importTiddlers.addTags && config.macros.importTiddlers.newTags.trim().length)\n newTags+=" "+config.macros.importTiddlers.newTags; // add new tags\n theImported.set(null,null,null,null,newTags.trim());\n // set the status to 'added' (if not already set by the 'ask the user' UI)\n theImported.status=(theImported.status=="")?'added':theImported.status;\n // do the import!\n store.addTiddler(theImported);\n store.setDirty(true);\n }\n return(-1); // signals that we really finished the entire list\n}\n//}}}\n\n//{{{\nfunction importStopped()\n{\n var theList = document.getElementById('importList');\n var theNewTitle = document.getElementById('importNewTitle');\n if (!theList) return;\n if (config.macros.importTiddlers.index==-1)\n importReport(); // import finished... generate the report\n else\n {\n // DEBUG alert('import stopped at: '+config.macros.importTiddlers.index);\n // import collision... show the ask panel and set the title edit field\n document.getElementById('importAskPanel').style.display='block';\n theNewTitle.value=theList.options[config.macros.importTiddlers.index].value;\n }\n}\n//}}}\n
IT professional who started First Boston's Information Technology Group in 1970 and had worked on Wall Street up until 2002. She has been an IT consultant for Bank Trust, the UN, JP Morgan, and American Express. In 1988 she started TibetNet, a derivative of the Defense Advanced Research Project (DARPA) Internet.\n\n//September 11th I was a senior consultant for [[JP Morgan Chase]] and [[Risk]]. I had cycled through several of their Risk areas as an enterprise architect, or an information architect, technology architect… which basically means that you take a look at the entire enterprise and come up with a blueprint, make sure that all the systems, not just one system, but all the systems, the blueprints for all the systems that are developed to support the business, are in-line, in tune with the business goals and the business architecture and the business processes and where the business is going.\n\nSo it’s pretty high-level, we call it the CXO level, or the Chief Information Officer, Chief Technology Officer levels and there are disciplines and methodologies and very esoteric software that’s used to manage this. I did that at JP Morgan Chase and I also worked for a small company in Washington, D.C. that was doing some very innovative work regarding technology interoperability, they were developing some inference engines to think about how to put technology architectures together and I wanted to use that for my risk work, basically.\n\n…we were seeking funding from [[In-Q-tel]] which was the CIA’s information technology seeking arm, I had been spending pretty much every Thursday - Friday down in D.C. trying to get that project off the ground, and trying to get it funded.//\n\nShortly After October 12, 2001: Software Company Whistleblowers Ignored\n\n[[Yassin al-Qadi]], a Saudi multimillionaire businessman, was officially declared a terrorist financier in October 2001. [Arab News, 9/26/2002] That same month, a number of employees at [[Ptech]] (since renamed [[GoAgile]]), a Boston-based computer company that al-Qadi and other individuals suspected of financing officially designated terrorist groups invested in, tell the Boston FBI about the connections between Ptech and al-Qadi. However, FBI agents do little more than take their statements. A high-level government source later will claim the FBI does not convey the Ptech/al-Qadi link to [[Operation Greenquest]], a Customs Department investigation into al-Qadi and other suspected financiers, and none of the government agencies using Ptech software are warned about the possible security threat Ptech represents. [Boston Globe, 12/7/2002; WBZ 4 (Boston), 12/9/2002] \n\nAccording to a private terrorism expert involved in investigating Ptech at the time, “Frighteningly, when an employee told (Ptech president [[Oussama Ziade]]) he felt he had to contact the FBI regarding al-Qadi’s involvement in the company, the president allegedly told him not to worry because [[Yaqub Mirza]], who was on the board of directors of the company and was himself a target of a [Greenquest] terrorist financing raid in March 2002, had contacts high within the FBI.” [National Review, 5/27/2003] \n\nA month after the Sept. 11, 2001, attacks, however, al-Qadi's name surfaced on a U.S. government list of individuals and groups suspected of funding terrorism. Authorities accused him of funneling millions of dollars to al-Qaeda through a relief foundation.\n\nEarly December, 2001\n\n[[United Press International]] ([[UPI]]) publishes an article on the post-911 environmental conditions in downtown Manhattan. The news agency interviews [[Indira Singh]], an IT risk architect and volunteer emergency medical technician, who says that "before the terrorist attacks she was a mountain climber and a pilot and in the top physical condition of her life but since then she has a cough, onset asthma, chest pain and headaches that won’t quit.” She adds that many of her neighbors “have coughs, headaches, ugly rashes, eye infections, people coughing up blood, kidney infections, upper respiratory problems, swollen tongues and most bizarre of all about a dozen had their dental work fall out.” [United Press International, 12/7/2001]\n\nMay-December 5, 2002: US Investigators Pressed to Look Into Ptech\n\nIn October 2001, Ptech insiders attempted to warn the FBI that suspected terrorist financier [[Yassin al-Qadi]] had funded [[Ptech]]. Then Indira Singh, an employee at [[JP Morgan Chase]] bank, develops her own suspicions about Ptech after her bank assigned her to investigate Ptech for a potential business deal. In May 2002, she speaks with the FBI about her concerns. Weeks later, she learns the FBI still has not told any other government agencies about the potential Ptech security threat. She later will recall, “the language, the kind of language law enforcement, counterterrorism, and the FBI agents themselves were using basically indicated to me that absolutely no investigation was going on, that it was totally at a standstill, at which point my hair stood on end.” \n\nShe contacts a Boston CBS television station, WBZ-TV, and a reporter for the station named Joe Bergantino begins investigating Ptech. [Boston Globe, 12/7/2002; WBZ 4 (Boston), 12/9/2002; National Public Radio, 12/8/2002] Around the same time, a former government official with contacts in the Bush administration tells officials at the [[National Security Council]] about the Ptech allegations. By late August, [[Operation Greenquest]] then opens its own Ptech investigation. The FBI then tries “to muscle its way back into the probe once it [becomes] clear that [Greenquest is] taking the case seriously.” [Newsweek, 12/6/2002; WBZ 4 (Boston), 12/9/2002] \n\nBeginning in late November, US agents begin calling Ptech officials and asking them if they have ties to money laundering, thus tipping them off. Ptech will also be notified when a December raid will be occurring before it happens. [Associated Press, 1/3/2003] WBZ-TV prepared a story on Ptech, but withheld it from the public for more than three months after receiving “calls from federal law enforcement agencies, some at the highest levels.” The station claims the government launched its Ptech probe in August 2002, after they “got wind of our investigation” and “asked us to hold the story so they could come out and do their raid and look like they’re ahead of the game.” [Boston Globe, 12/7/2002; WBZ 4 (Boston), 12/9/2002]\n\nPtech's customers included the Army, the Air Force, the Naval Air Command, the Congress, the Department of Energy, the FAA, the IRS, NATO, the FBI, the Secret Service, and even the White House.\n\n[[Care International]] is a renamed version of [[Alkhifah]] which was the funding arm for WTC '93. Prior to Alkhifah it was called [[Maktab Al-Khidamat]], which is the funding arm for the Afghani Mujahideen. It was how the monies got to [[Osama bin Laden]] through the Pakistani ISI (secret service).
\nThe following information has been given to each member of the House Judiciary Committee and was placed on the Internet in electronic form by [[Bill Hamilton]] of Inslaw Corporation. The complete document with supporting details may be obtained from:\n \n [[Inslaw|http://www.inslawinc.com/]]\nOld Address : \n 1125 15th Street, NW\n Washington, DC 20005-2707\n Telephone (202) 828-8638\n\nNew Address : \n 1156 15th Street, NW\n Washington, DC 20005-2707\n Telephone: 202-828-8600\n Fax: 202-659-0755\n \n''Also see: ''\n*[[House Report 102-857|http://www.eff.org/legal/cases/INSLAW/inslaw_hr.report]]\n*[[(1994 - Inslaw) 103d CONGRESS-2d Session-HR4862|http://thomas.loc.gov/cgi-bin/query/z?c103:H.R.4862.IH:]]\n*[[(2005 - Valerie Plame) 109th CONGRESS-1st Session-HR420-to accompany HR230|http://thomas.loc.gov/cgi-bin/cpquery/T?&report=hr230&dbname=109&]]\n\n''[[Search THOMAS|http://thomas.loc.gov/home/multicongress/multicongress.html]] : ''\nListing of 7 bills containing your phrase "inslaw" (or variants of its words) in the same order.\n*1 . [103rd] For the relief of INSLAW, INC., a Delaware Corporation, and William A. Hamilton and Nancy Hamilton, individually. (Introduced in House) - [[H.R.4862.IH|http://thomas.loc.gov/cgi-bin/query/D?c103:1:./temp/~mdbsaL8v7g::]]\n*2 . [103rd] For the relief of INSLAW, INC., a Delaware Corporation, and William A. Hamilton and Nancy Hamilton, individually. (Reported in House) - [[H.R.4862.RH|http://thomas.loc.gov/cgi-bin/query/D?c103:2:./temp/~mdbsaL8v7g::]]\n*3 . [102nd] To authorize the production of records by the Permanent Subcommittee on Investigations of the Committee on Governmental Affairs. (Agreed to by Senate) - [[S.RES.302.ATS|http://thomas.loc.gov/cgi-bin/query/D?c102:3:./temp/~mdbsaL8v7g::]]\n*4 . [104th] For the relief of Inslaw, Inc., and William A. Hamilton and Nancy Burke Hamilton. (Introduced in Senate) - [[S.740.IS|http://thomas.loc.gov/cgi-bin/query/D?c104:4:./temp/~mdbsaL8v7g::]]\n*5 . [104th] To refer S. 740, entitled `A bill for the relief of Inslaw, Inc., and William A. Hamilton and Nancy Burke Hamilton' to the chief judge of the United States Court of Federal Claims for... (Agreed to by Senate) - [[S.RES.114.ATS|http://thomas.loc.gov/cgi-bin/query/D?c104:5:./temp/~mdbsaL8v7g::]]\n*6 . [104th] To authorize the production of documents by the Permanent Subcommittee on Investigations. (Agreed to by Senate) - [[S.RES.222.ATS|http://thomas.loc.gov/cgi-bin/query/D?c104:6:./temp/~mdbsaL8v7g::]]\n*7 . [103rd] Resolved, That the bill from the House of Representatives (H.R. 4307) entitled `An Act to amend title 35, United States Code, with respect to applications for process patents, and... (Engrossed Amendment as Agreed to by Senate) - [[H.R.4307.EAS|http://thomas.loc.gov/cgi-bin/query/D?c103:7:./temp/~mdbsaL8v7g::]]\n \n \n''EXECUTIVE SUMMARY''\n \n Eleven years ago, the Justice Department's [[PROMIS]] Project Manager arranged for an Israeli Government official to visit INSLAW for a PROMIS briefing and demonstration. The Justice Department told INSLAW that the visitor was a prosecuting attorney from the Israeli Ministry of Justice who would be overseeing a project to computerize the public prosecution offices in Israel.\n \n Three months after the visit, the Justice Department secretly turned over to a representative of the Israeli Government a copy of the PROMIS software, according to a contemporaneous internal Justice Department memorandum made public by the House Judiciary Committee in its [[September 1992 Investigative Report, The INSLAW Affair|http://www.eff.org/legal/cases/INSLAW/inslaw_hr.report]].\n \n INSLAW followed up on this disclosure by the House Judiciary Committee by contacting the Israeli Ministry of Justice in Tel Aviv about the "prosecuting attorney" who had visited INSLAW ten years earlier in February 1983. After obtaining information from the Ministry about the current location of the prosecuting attorney, INSLAW consulted with two journalists in Tel Aviv. One journalist interviewed the now-retired prosecuting attorney at his home in Jerusalem. The prosecuting attorney bore no resemblance to the visitor to INSLAW and was unfamiliar with some important aspects of the visit to INSLAW, although he claimed to have been the February 1983 Israeli visitor to INSLAW. The other journalist told INSLAW that the prosecuting attorney's name has been used in the past as a pseudonym for [[Rafi Eitan]], a legendary Israeli intelligence official.\n \n INSLAW employees who had met with the Israeli visitor in February 1983 attempted to identify the visitor from a police-style photographic line-up. The process was videotaped in the studio of a national television network. The photographic line-up confirmed that the visitor to INSLAW was neither a prosecutor nor an attorney, but Rafi Eitan. At the time of the visit to INSLAW, Rafi Eitan was Director of [[LAKAM]], a super-secret agency in the Israeli Ministry of Defense responsible for collecting scientific and technical intelligence information from other countries through espionage. Rafi Eitan became well known in the United States, several years after his visit to INSLAW, when [[Jonathan Pollard]], a U.S. Navy civilian intelligence analyst, was arrested and charged with spying for Rafi Eitan and Israeli intelligence.\n \n During the interim between Rafi Eitan's visit to INSLAW and the delivery of a copy of PROMIS to an Israeli official, the Government's PROMIS Project Manager and others in the Justice Department pressured INSLAW to deliver to the [[DOJ]], without any protection for INSLAW's property rights, the proprietary version of PROMIS that was not required to be delivered under INSLAW's PROMIS Implementation Contract.\n \n The particular proprietary version of PROMIS that was the object of this Justice Department pressure was the version that INSLAW had demonstrated to the Israeli Government visitor and that operates on a VAX computer. INSLAW was operating this proprietary version of PROMIS on a computer at INSLAW's offices and using it to support each of the 10 largest U.S. Attorneys' Offices, via telephone lines. Under its three-year contract, INSLAW was to provide this PROMIS computer time-sharing service on an interim basis until each of the U.S. Attorneys' Offices acquired its own computer, and INSLAW thereafter was to install an earlier, public domain version of PROMIS on those computers.\n \n The Justice Department explained this pressure to obtain immediate delivery of a copy of the proprietary VAX version of PROMIS by a suddenly-professed concern about INSLAW's financial viability. In response to this professed concern, INSLAW offered to place a copy of the VAX version of PROMIS in escrow in a local bank; that would have been the accepted industry remedy for the professed problem. The Justice Department, however, rejected INSLAW's escrow offer and insisted on immediately obtaining physical custody of a copy of the proprietary VAX version of PROMIS.\n \n The Justice Department eventually accomplished its objective of physical custody of a copy of the VAX version of PROMIS through a bilateral modification to the contract in which the Government committed itself, inter alia, not to disseminate the proprietary version of PROMIS outside the U.S. Attorneys' Offices. This was the April 11, 1983 Modification #12 to the PROMIS Implementation Contract. None of the U.S. Attorneys' Offices had a VAX computer, without which it is impossible to use a VAX version of PROMIS. \n\n Two lower federal courts found that the Justice Department entered into Modification #12 in order to "steal" the proprietary version of PROMIS "through trickery, fraud and deceit." The House Judiciary Committee independently confirmed those findings in the course of a three- year-long investigation.\n \n Rafi Eitan emerged again in the INSLAW affair in 1986 when INSLAW filed a lawsuit against the Justice Department over the theft of the PROMIS software. INSLAW's lead litigation counsel was fired by his law firm amid secret communications between the law firm and the two highest officials of the U.S. Justice Department. The Attorney General stated under oath and the Deputy Attorney General claimed to the Senate that the secret discussions were about the INSLAW case; the law firm claimed to the press that the secret discussions were about its concurrent representation in the Jonathan Pollard-Rafi Eitan espionage case.\n \n In May 1986, three years to the month after the Justice Department secretly turned over a copy of PROMIS to an Israeli Government official, INSLAW and senior partners in the law firm that was then serving as INSLAW's litigation counsel reviewed a complaint, drafted by INSLAW's lead counsel, for the lawsuit against the Justice Department about the theft of the proprietary version of PROMIS. The complaint contained over 50 references to Jensen; included was a 23-paragraph section that described the "personal involvement" of then Deputy Attorney General [[D. Lowell Jensen]] in the INSLAW affair, beginning with Jensen's tenure as Assistant Attorney General for the Criminal Division during the first several years of the Reagan Administration. The law firm immediately rejected the complaint that had been drafted by the lead counsel and set about to redraft the complaint in its entirety, assigning two additional lawyers to the INSLAW case for that purpose. These lawyers soon produced a new complaint that omitted every reference to the role of D. Lowell Jensen. Prior to the filing of the revised complaint in U.S. Bankruptcy Court, the lead counsel inserted, at INSLAW's insistence, a single parenthetical reference to Jensen's role.\n \n In October 1986, three months after INSLAW filed its lawsuit, the law firm fired INSLAW's lead counsel who had by then been a partner in the firm for 10 years. The lead counsel told INSLAW at the time that he had been fired for naming Jensen in the complaint. He also told INSLAW at the time that the Managing Partner had stated that Senior Partner [[Leonard Garment]] had instigated the firing.\n \n On October 6, 1986, one week before Leonard Garment and the other members of the law firm's Senior Policy Committee met to vote on the decision to expel INSLAW's lead counsel from the firm, Garment had a social luncheon regarding INSLAW with Deputy Attorney General [[Arnold Burns]]. Garment never disclosed this fact either to INSLAW's lead counsel or to INSLAW. Burns had succeeded Jensen as Deputy Attorney General in the summer of 1986 when Jensen left the Justice Department to become a U.S. District Court Judge in San Francisco. During the luncheon, Burns complained to Garment about the litigation strategy that INSLAW's lead counsel was pursuing in its lawsuit against the Department and signalled to Garment his willingness to discuss a settlement, according to Burns' later disclosures to the Senate Permanent Investigations Subcommittee. Attorney General Meese also talked to Garment in October 1986 about INSLAW and about Garment's conversation with Burns relating to INSLAW, according to later sworn Justice Department responses to INSLAW interrogatories.\n \n In early 1988, in statements to the press, Garment disclaimed any recollection of a discussion about INSLAW with Deputy Attorney General Burns and insisted that his October 1986 discussion with Attorney General Meese had been about Israel, not INSLAW. Moreover, Garment elaborated on this claim, reportedly telling at least one journalist that it was a discussion of a "back channel" communication that Garment had had with the Government of Israel about the Pollard case, which Garment described to the journalist as a national security problem affecting both Israel and the U.S. Justice Department.\n \n The Israeli Government had retained Garment in an effort to prevent the indictment by the U.S. Justice Department of other Israeli officials involved in the Pollard espionage scandal. The central role of Rafi Eitan and Israeli intelligence in both the INSLAW affair and the Pollard espionage scandal may account for why Meese and Burns characterized the October 1986 discussions with Garment as having to do with INSLAW, while Garment insisted they were really about a national security problem of concern to both Israel and the U.S. Justice Department.\n \n When Garment's law firm fired INSLAW's lead counsel, it agreed to make severance payments to him in excess of half-a-million dollars and contractually bound him to secrecy about the severance. Soon after firing INSLAW's lead counsel, the law firm, which had, by then, been representing INSLAW for almost a year, suddenly claimed to have discovered fatal deficiencies in the evidence available to prove the Justice Department's 1983 theft of PROMIS. The law firm presented INSLAW with a written ultimatum to concede to the Justice Department on that question or find new litigation counsel. INSLAW found new litigation counsel and proved in the U.S. Bankruptcy Court and the U.S. District Court that the Justice Department had stolen the PROMIS software in 1983.\n \n A former Israeli intelligence official, Ari Ben Menashe, published a book in the fall of 1992 entitled Profits of War, that contains specific claims about Rafi Eitan and the PROMIS software, many of which are plausible in view of the aforementioned facts. According to the author, a high-ranking member of the White House National Security Council staff was personally involved in the delivery of a copy of the proprietary version of PROMIS to Rafi Eitan during a visit by Rafi Eitan to Washington, DC in the early 1980's. [[Robert McFarlane]], who during the relevant period was Deputy National Security Advisor to President [[Ronald Reagan]], and Earl W. Brian, a private businessman who had been a member of the California cabinet of Governor Ronald Reagan, secretly presented INSLAW's proprietary software to Rafi Eitan, according to the author.\n \n The objective of the alleged White House gift of INSLAW's software to Rafi Eitan and Israeli intelligence was for Israeli intelligence, through sales conducted by cutout companies, to disseminate PROMIS to foreign intelligence agencies, law enforcement agencies, and international commercial banks so that PROMIS could function in those target organizations as an [[electronic Trojan horse]] for Allied signal intelligence agencies, according to the author. \n \n Among the individuals whose companies served as cutouts for the illegal dissemination of PROMIS by Israeli intelligence, according to the author, were [[Earl W. Brian]] and the late British publisher, [[Robert Maxwell]]. Earl W. Brian, for example, allegedly sold the proprietary version of PROMIS to Jordanian military intelligence, so that Israeli signal intelligence could surreptitiously access the computerized Jordanian dossiers on Palestinians.\n \n When INSLAW sought redress in the federal courts in 1986 for the Justice Department's 1983 theft of PROMIS, Israeli intelligence intervened to obstruct justice, according to the author. While employed in Tel Aviv by Israeli military intelligence, [[Ari Ben Menashe]] claims to have seen a wire transfer of $600,000 to Earl W. Brian for use in financing a severance agreement between INSLAW's fired lead counsel and his law firm. Rafi Eitan drew the funds from a slush fund jointly administered by U.S. and Israeli intelligence, and Earl W. Brian was, in turn, to relay the money to Leonard Garment, according to the author.\n \n In a meeting at the Justice Department on December 16, 1993, INSLAW presented a sensitive document, authored by a self-evidently credible person, offering, under appropriate circumstances, to make available evidence corroborative of significant elements of Ben Menashe's published claims.\n \n Another aspect of the role of Israeli intelligence in the INSLAW affair is its alleged use of Robert Maxwell as a [[cutout]]. Maxwell's role as a cutout for a foreign nation's sale of computer software has been implicitly acknowledged by the actions of the [[FBI]]. Robert Maxwell's dissemination of computer software was the subject of an FBI foreign counterintelligence investigation in 1984. Ten years later, in January 1994, INSLAW obtained, under the Freedom of Information Act ([[FOIA]]), 18 pages relating to an investigation on this subject in New Mexico in June 1984. The FBI furnished the documents to INSLAW in response to a FOIA request for documents relating to Maxwell's involvement in "the dissemination, marketing or sale of computer software systems, including but not limited to the PROMIS computer software product, between 1983 and 1992." The FBI heavily redacted the 18 pages and ascribed the redactions to the secrecy requirements of national security. One month before the FBI released the documents to INSLAW, it partially reclassified two of the pages that had been officially declassified in their entirety one year earlier. The FBI redacted the newly reclassified portions in the copies given to INSLAW.\n \n Robert Maxwell also developed a business relationship during the latter half of the 1980's with two computer systems executives from the Meese Justice Department, at least one of whom had responsibilities relating to the proprietary version of PROMIS. Robert Maxwell set up a tiny publishing company in Mc Lean, Virginia, in August 1985. That company then hired two senior computer systems executives from a unit of the Meese Justice Department that operated the proprietary version of PROMIS. One was the Director of the Justice Data Center, the Justice Department's own internal computer time-sharing facility where the proprietary IBM version of PROMIS was operating for one of the legal divisions under license from INSLAW. The Director of the Justice Data Center resigned his estimated $90,000-a-year Senior Executive Service position to become Vice President for Technical Services at the six-employee start-up national defense publishing company owned by Robert Maxwell. \n\n In piecing together the puzzle of the Government's theft of the proprietary version of PROMIS from INSLAW, we have noted the role of the Government's PROMIS Project Manager in sending Rafi Eitan to INSLAW under false pretenses and the alleged role of a senior White House National Security official in giving the proprietary version of PROMIS to Rafi Eitan. The missing piece to the puzzle appears to be the piece that links the actions of the Justice Department's PROMIS Project Manager with the alleged actions of the senior White House National Security official. Based on the available evidence, the missing piece appears to be [[D. Lowell Jensen]], who was Assistant Attorney General for the Criminal Division at the time of the theft. \n \n Jensen pre-approved virtually every decision taken by the Government's PROMIS Project Manager under INSLAW's contract, according to the latter's sworn testimony to the House Judiciary Committee. Jensen engineered INSLAW's problems with the Justice Department through specified top Criminal Division aides in order to give the PROMIS business to unidentified "friends," according to Justice Department officials whose statements and backgrounds INSLAW summarized in its July 11, 1993 rebuttal.\n \n At the time of the 1983 theft, Jensen in the Criminal Division and [[Edwin Meese]] at the White House were planning to award a massive sweetheart contract to unidentified "friends" for the installation of PROMIS in every litigative office of the Justice Department, according to statements made in June 1983 by a Justice Department whistleblower to the staff of a Senator on the Judiciary Committee. The award was allegedly to take place once Meese left the White House to become Attorney General. Jensen and Meese had been close friends since the 1960's when they served together in the Alameda County, California, District Attorney's Office.\n \n INSLAW has repeatedly given the Justice Department the names of senior Criminal Division officials under Jensen who either allegedly helped him implement the malfeasance against INSLAW or who allegedly witnessed it. On more than one occasion, INSLAW summarized for the Justice Department the circumstantial evidence that is at least partially corroborative of these allegations. Based on warnings from confidential informants in the Justice Department, INSLAW has repeatedly emphasized to the Justice Department the absolute necessity of placing these officials under oath before interrogating them, as well as the importance of a public statement by the Attorney General guaranteeing no reprisals. More than five years have elapsed since INSLAW began furnishing this information to the Justice Department. Not one of these Criminal Division officials has, it appears, ever been interrogated under oath regarding the INSLAW affair. And no Attorney General has seen fit to issue a public statement to Justice Department employees making it clear that the Attorney General wishes employees who have information about the INSLAW affair to come forward, and giving Justice Department employees the public assurance that reprisals will not be tolerated. \n \n One of the senior Criminal Division officials who allegedly knows the whole story of Jensen's malfeasance against INSLAW is Mark Richard, the career Deputy Assistant Attorney General who has responsibility for intelligence and national security matters. In May 1988, the Chief Investigator of the Senate Judiciary Committee told INSLAW that a trusted source, who was in a position to observe Jensen's malfeasance, had identified [[Mark Richard]] as someone who not only knew the whole story but who was also "pretty upset" about it. \n \n One of the organizational units that reports to Mark Richard is the Office of Special Investigations ([[OSI]]). OSI's publicly-declared mission is to locate and deport Nazi war criminals. The Nazi war criminal program is, however, a front for the Justice Department's own covert intelligence service, according to disclosures recently made to INSLAW by several senior Justice Department career officials.\n \n One undeclared mission of this covert intelligence service has been the illegal dissemination of the proprietary version of PROMIS, according to information from reliable sources with ties to the U.S. intelligence community. INSLAW has, moreover, obtained a copy of a 27-page Justice Department computer printout, labelled "Criminal Division Vendor List." That list is actually a list of the commercial organizations and individuals who serve as "cutouts" for this secret Justice Department intelligence agency, according to intelligence community informants and a preliminary analysis of the computerized list. A significant proportion of the 100-plus companies on the list appear to be in the computer industry. The Justice Department's secret intelligence agency also has its own "proprietary" company that employs scores of agents of diverse nationalities, as well as individuals who appear to be regular employees of various departments and agencies of the U.S. Government or members of the U.S. Armed Forces, according to several sources.\n \n According to written statements of which INSLAW has obtained copies, another undeclared mission of the Justice Department's covert agents was to insure that investigative journalist [[Danny Casolaro]] remained silent about the role of the Justice Department in the INSLAW scandal by murdering him in West Virginia in August 1991. INSLAW has acquired copies of two relevant written statements furnished to a veteran investigative journalist by a national security operative of the U.S. Government, several months after Casolaro's death. The individual who reportedly transmitted these written statements to the journalist by fax has testified under oath to being a national security operative for the [[FBI]] and the [[CIA]]. Partial corroboration for his claimed work for the FBI is reportedly available in the sworn testimony of several FBI agents during a recent criminal prosecution. One statement purportedly reflects the operative's personal knowledge and belief that Casolaro was killed by agents of the Justice Department and is allegedly written in the operative's own hand. The other statement is an excerpt from a typewritten set of questions and answers. The questions were posed to a senior CIA official by the investigative journalist; the answers, purportedly from the senior CIA official, were reportedly sent by fax to the journalist by the national security operative, who was acting as an intermediary. The following is the pertinent question and answer:\n \n ''Q. Do you have any information for [San Francisco-based investigative journalist] George Williamson yet regarding the Danny Casolaro matter?\n \n A. Yes. Casolaro appears to have been working as a free lance writer at the time of his death and was gathering material for a book. He was investigating the INSLAW case. He was on the trail of information that could have made the whole matter public and led to the exposure of the Justice Department and their involvement in the matter. Apparently he was very close to obtaining that information. We do not agree with the consensus of opinion among the reporters who looked into the matter, that Casolaro committed suicide. Casolaro was murdered by agents of the Justice Department to insure his silence. The entire matter was handled internally by Justice, and our agency was not involved.''\n \n Although these allegations are profoundly disturbing, there is significant circumstantial evidence that bears on the plausibility of the allegations. As reported in INSLAW's July 11, 1993 rebuttal, Casolaro was scheduled to have his final, follow-up meeting with two sources on INSLAW in West Virginia the night before he died, and one of those sources was connected to the Justice Department's PROMIS Contracting Officer. As reported in this addendum, the meeting between Casolaro and those sources had allegedly been brokered by a covert intelligence operative for the U.S. Government, an Army Special Forces Major. This individual appeared in Casolaro's life during the final several weeks and introduced himself to Casolaro as one of the closest friends of the Government's PROMIS Contracting Officer. Finally, during the final week of his life, Casolaro told at least five confidants something that he had never told a single one of them at any other time during his year-long, full-time investigation: that he had just broken the INSLAW case. The preceding facts and the following information are noted in the July 11, 1993 rebuttal. Shortly after Casolaro was found dead, the aforementioned covert intelligence operative allegedly made the following statement, in words or substance, to a woman who had been present during several of his meetings with Casolaro:\n \n //What Danny Casolaro was investigating is a business. If you don't want to end up like Danny or like the journalist who died a horiffic death in Guatemala, you'll stay out of this. Anyone who asks too many questions will end up dead.//\n \n Not all of the secret Justice Department dissemination of PROMIS has gone through Rafi Eitan and Israeli intelligence. For example, in June 1983, the month after the Justice Department secretly conveyed a copy of PROMIS to a representative of the Government of Israel, it also, in partnership with the National Security Agency ([[NSA]]), secretly delivered a copy of PROMIS to the [[World Bank]] and the International Monetary Fund ([[IMF]]), according to a recent series of articles in the American Banker's International Banking Regulator. The Justice Department and its NSA partner conveyed a copy of the\nproprietary VAX version of PROMIS to the two international financial institutions so that the NSA could electronically monitor their operations. This is the same version of PROMIS that the Justice Department had asked INSLAW to demonstrate to Rafi Eitan in February 1983. As noted earlier, the Justice Department had committed itself not to disseminate the proprietary version of PROMIS outside the U.S. Attorneys' Offices. \n \n A second example is the alleged secret Justice Department conveyance of a copy of the proprietary IBM version of PROMIS to the CIA. In September 1993, CIA Director [[R. James Woolsey]] told INSLAW counsel [[Elliot Richardson]] that the CIA is using a PROMIS software system that it acquired from the [[NSA]] and that is identical to the PROMIS software that NSA uses internally and that is described on page 80 of the [[Bua Report]]. The application domain of the NSA's PROMIS is the mission critical application of tracking the intelligence information it produces. The NSA's PROMIS operates on an IBM mainframe computer. This latest CIA disclosure underscores the difficulty the CIA has had in accounting for its PROMIS. The CIA initially told the House Judiciary Committee in writing that it had been unable to locate internally any PROMIS software. Approximately one year later, the CIA wrote again to the House Judiciary Committee, stating that components of the CIA were operating a software system called PROMIS but that it had purchased its PROMIS from a company in Massachusetts. That PROMIS operates on a personal computer with project management as the application domain. In both written reports, the CIA inexplicably failed to mention the PROMIS that operates on an IBM mainframe computer at the CIA and that is critical to the CIA's primary mission of producing intelligence information.\n \n The third example is the alleged Justice Department secret dissemination of PROMIS to the NSA. Although the NSA is quoted in the Bua Report as claiming that it internally developed its PROMIS, the Toronto Globe and Mail reported in May 1986 that the NSA had purchased a PROMIS software system from a Toronto-based company. As shown in Exhibit A to INSLAW's July 11, 1993 rebuttal, [[Earl Brian]]'s [[Hadron, Inc.]] sold INSLAW's PROMIS to the same Toronto company in 1983, in a transaction that also allegedly involved [[Edwin Meese]], then Counsellor to the President.\n \n The final example concerns the allegation that the Justice Department secretly distributed the proprietary VAX version of PROMIS to the U.S. Navy for an intelligence application on board nuclear submarines. The Navy confirmed to a reporter for Navy Times that it has a PROMIS software system and that it operates its PROMIS on a VAX computer in support of its nuclear submarines. The Navy's Undersea Systems Center in Portsmouth, Rhode Island, furthermore, notified the reporter in writing that its engineers had locally developed this VAX version of PROMIS; that its PROMIS is installed only at its land-based facility at Newport, Rhode Island; and that its PROMIS has never been installed on board any nuclear submarine. INSLAW has, however, obtained a document published by the same Undersea Systems Center in 1987 that reveals that its PROMIS is not only operating at the land-based "test facility" in Newport, but is also operational on board both attack class and "boomer" class submarines. The Navy, like the CIA and the NSA, clearly has difficulty in giving a credible accounting of its PROMIS software.\n \n The Justice Department continues to try to convince INSLAW, Congress, the press and the American public that the INSLAW affair is, at best, a government contract dispute which could have been resolved long ago if INSLAW had submitted the dispute to the only forum deemed appropriate by the Justice Department: an [[Executive Branch Contract Appeals Board]]. What the evidence summarized in this addendum demonstrates, however, is that the essence of the INSLAW affair is radically different. The INSLAW affair was a premeditated, cynical and deceitful taking of INSLAW's software property by the chief law enforcement agency of the United States without due process of law and without compensation to INSLAW in violation of the Fourth Amendment to the Constitution.\n \n //They [the Hamiltons] don't know squat about how dirty that\n INSLAW deal was. If they ever find out half of it, they will\n be sickened.\n \n It is a lot dirtier for the Department of Justice than Watergate.\n \n It is not just the breadth of it, but also the depth of it. The\n Department of Justice has been compromised at every level.//\n \n - Statements attributed to a senior Justice Department career official by the Chief Investigator of the Senate Judiciary Committee in 1988\n \n(Schematic depicting the alleged use of INSLAW's PROMIS Computer Software Product to satisfy a longstanding need for compatible database software within the U.S. Intelligence community.)\n \nFederal Bureau of Investigation ([[FBI]])\nIndividual Agency PROMIS Database - known internally as [[FOIMS]] (Field Office Information Management\n System)\n \nDefense Intelligence Agency ([[DIA]])\nCentral Intelligence Agency ([[CIA]]) \nIndividual Agency PROMIS Database\nMaster PROMIS Database \nWhite House National Security Council ([[NSC]])\nIndividual Agency PROMIS Database\nPrimary Telecommunications\nNetwork for PROMIS Data \nNational Security Agency ([[NSA]])\nExchange: INFO NET \nIndividual Agency PROMIS Database\nAlternative Telecommunications\nNetworks for PROMIS Data\nExchange: Internet Use Net\n\nEach Nuclear Submarine allegedly has a copy of the CIA's Master PROMIS Database in the event of a national emergency. Each submarine receives regular updates from the CIA via one of the telecommunications networks.
// Ensure the Plugin is only installed once.\n//\nif (!version.extensions.IntelliTaggerPlugin) {\n\n// Ensure the global abego namespace is set up.\nif (!window.abego) window.abego = {};\nif (!abego.internal) abego.internal = {};\n\n// Opens an alert with the given string and throws an exception \n// with the same string after the alert is closed.\n//\nabego.alertAndThrow = function(s) {\n alert(s);\n throw s;\n};\n\nif (version.major < 2) {\n abego.alertAndThrow("Use TiddlyWiki 2.0.8 or better to run the IntelliTagger Plugin.");\n}\n\nversion.extensions.IntelliTaggerPlugin = {\n major: 1, minor: 0, revision: 0,\n date: new Date(2006, 3, 26),\n type: 'plugin',\n source: "http://tiddlywiki.abego-software.de/#IntelliTaggerPlugin",\n documentation: "[[IntelliTaggerPlugin Documentation]]",\n sourcecode: "[[IntelliTaggerPlugin SourceCode]]",\n author: "Udo Borkowski (ub [at] abego-software [dot] de)",\n licence: "[[BSD open source license (abego Software)]]",\n tiddlywiki: "Version 2.0.8 or better",\n browser: "Firefox 1.5.0.2 or better"\n};\n\n// ========================================================================\n// Utilities ==============================================================\n// ========================================================================\n\n// ========================================================================\n// Popup \n// \n// A Popup is an HTML element floating on top of the main HTML page. \n// \n// The HTML element (typically a "div" element) is added as a direct child \n// of the document.body.\n//\n// A Popup element should respect the following style conventions:\n//\n// position = "absolute"; // required.\n// left = aDimension; // required. E.g. "10px"\n// // When not defined the Popup is not displayed.\n// top = aDimension; // required. E.g. "10px"\n// // When not defined the Popup is not displayed.\n// background = aColor; // optional. E.g. "white"\n// // When not defined the Popup is transparent.\n// border = aBorderSpec; // optional. E.g. "1px solid DarkGray"\n// width = aDimension; // optional. E.g. "200px"\n// // When not defined the width is calculated \n// // automatically.\n// height = aDimension; // optional. E.g. "200px"\n// // When not defined the height is calculated \n// // automatically.\n// ========================================================================\n\n\n\n// Returns true iff the given element is "opened as a popup", \n// i.e. a direct child of the document.body.\n//\n// @param element [may be null/undefined] \n// an HTML element\n//\nabego.isPopupOpen = function(element) {\n return element && element.parentNode == document.body;\n};\n\n// Opens the given element as a popup.\n// \n// @param element \n// an HTML element\n//\nabego.openAsPopup = function(element) {\n if (element.parentNode != document.body)\n document.body.appendChild(element);\n};\n\n\n// Closes the given popup.\n// Does nothing when the element is not a popup or not open.\n//\n// @param element [may be null/undefined] \n// an HTML element\n//\nabego.closePopup = function(element) {\n if (abego.isPopupOpen(element)) \n document.body.removeChild(element);\n};\n\n// Returns the rectangle of the (browser) window\n//\n// @return {left,top,height,width}\n// \nabego.getWindowRect = function() {\n return {\n left: findScrollX(),\n top: findScrollY(),\n height: findWindowHeight(),\n width: findWindowWidth()\n };\n};\n\n// Moves the given element to the given position (in pixel).\n//\nabego.moveElement = function(element, left, top) {\n element.style.left = left + "px";\n element.style.top = top + "px";\n};\n\n// Centers the given element on the window.\n//\n// The element must have absolute position\n// \nabego.centerOnWindow = function(element) {\n if (element.style.position != "absolute") \n throw "abego.centerOnWindow: element must have absolute position"; \n \n var winRect = abego.getWindowRect();\n\n abego.moveElement(\n element,\n winRect.left + (winRect.width - element.offsetWidth) / 2,\n winRect.top + (winRect.height - element.offsetHeight) / 2);\n};\n\n// Returns true if e is either self or a descendant (child, grandchild,...) of self.\n//\n// @param self DOM:Element\n// @param e DOM:Element [may be null]\n//\nabego.isDescendantOrSelf = function(self, e) {\n while (e) {\n if (self == e) return true;\n e = e.parentNode;\n }\n return false;\n};\n\n// Returns a set containing the items of the array. \n// \n// It is an object that has a property for every item of the array.\n// The name of the property is the "toString" representation of \n// the item. The value of the property is "true".\n//\n// Duplicate items are removed.\n//\nabego.toSet = function(array) {\n var result = {};\n for (var i = 0; i < array.length; i++)\n result[array[i]] = true;\n return result;\n};\n\n// Returns an array with all strings from strings that match the filterRE.\n//\n// @param maxCount [optional] if defined at most maxCount strings are returned.\nabego.filterStrings = function(strings, filterRE, maxCount) {\n var result =[];\n for (var i = 0; i < strings.length && (maxCount === undefined || result.length < maxCount); i++) {\n var s = strings[i];\n if (s.match(filterRE)) \n result.push(s);\n }\n return result;\n};\n\nabego.arraysAreEqual = function(a,b) {\n var n = a.length;\n if (n != b.length) \n return false;\n for (var i = 0; i < n; i++) \n if (a[i] != b[i])\n return false;\n return true;\n};\n\n// Adjusts the element's position to appear below the anchorElement, \n// and ensures the element fits into the window.\n//\nabego.moveBelowAndClip = function(element, anchorElement) {\n if (!anchorElement) \n return;\n \n // Position the result below the anchor and resize it if necessary.\n var anchorLeft = findPosX(anchorElement);\n var anchorTop = findPosY(anchorElement);\n var anchorHeight = anchorElement.offsetHeight;\n var elementLeft = anchorLeft;\n var elementTop = anchorTop + anchorHeight;\n\n // Make sure the result is not wider than the window\n var winWidth = findWindowWidth();\n if (winWidth < element.offsetWidth) {\n element.style.width = (winWidth - 100)+"px";\n }\n\n // Ensure that the left and right of the result are not\n // clipped by the window. Move it to the left or right, if necessary. \n var elementWidth = element.offsetWidth;\n if(elementLeft + elementWidth > winWidth)\n elementLeft = winWidth - elementWidth-30;\n if (elementLeft < 0) \n elementLeft = 0;\n \n // Do the actual moving\n element.style.left = elementLeft + "px";\n element.style.top = elementTop + "px";\n element.style.display = "block";\n};\n\nabego.compareStrings = function(a, b) {\n return (a == b) ? 0 : (a < b) ? -1 : 1;\n};\n\n// Sorts the given array alphabetically, ignoring the case.\n//\nabego.sortIgnoreCase = function(arr) {\n var result =[];\n \n // To avoid toLowerCase to be called twice for every comparison\n // we convert the strings once and sort the lowercase.\n // After sorting we replace them with the cased ones.\n //\n // Benchmarks have shown that this is significantly faster \n // than the ad hoc solution, even for small arrays \n // (like 5 Strings (10 chars each))\n \n var n = arr.length;\n for (var i = 0; i < n; i++) {\n var s = arr[i];\n result.push([s.toString().toLowerCase(),s]);\n }\n result.sort(function(a,b) {\n return (a[0] == b[0]) ? 0 : (a[0] < b[0]) ? -1 : 1;\n });\n \n for (i = 0; i < n; i++) \n arr[i] = result[i][1];\n};\n\n// Returns the specified field (input or textarea element), otherwise the first edit field it finds \n// or null if it found no edit field at all\n//\nabego.getTiddlerField = function(story,title,field) {\n var tiddler = document.getElementById(story.idPrefix + title);\n var e = null;\n if (tiddler != null) {\n var children = tiddler.getElementsByTagName("*");\n for (var t=0; t<children.length; t++) {\n var c = children[t];\n if(c.tagName.toLowerCase() == "input" || c.tagName.toLowerCase() == "textarea") {\n if(!e)\n e = c;\n if(c.getAttribute("edit") == field)\n e = c;\n // break; // adding this break would not be 100% compatible to <= TW 2.0.9. when a \n }\n }\n }\n return e;\n};\n\nabego.setRange = function(element, start, end) {\n// adapted from TaskMacroPlugin by LukeBlanshard. \n// http://labwiki.sourceforge.net/#CopyrightAndLicense.\n if (element.setSelectionRange) { // Mozilla\n element.setSelectionRange(start, end);\n // Damn mozilla doesn't scroll to visible. Approximate.\n var max = 0.0 + element.scrollHeight;\n var len = element.textLength;\n var top = max*start/len, bot = max*end/len;\n element.scrollTop = Math.min(top, (bot+top-element.clientHeight)/2);\n } else if (element.createTextRange != undefined) { // IE\n var range = element.createTextRange();\n range.collapse();\n range.moveEnd("character", end);\n range.moveStart("character", start);\n range.select();\n } else // Other? Too bad, just select the whole thing.\n element.select();\n};\n \n \n// TiddlerSet: an object with one property per tiddler in the set. \n// The name of the property corresponds to the tiddler name, \n// the value is "not false" (e.g. true or a non-zero number).\n//\n// TagMap<X>: an object that maps a tag to an object of type X (access through properties)\n//\nabego.internal.TagManager = function() {\n var tagReferences = null; // TagMap<{count: natural, tiddlers: TiddlerSet}>\n\n var ensureTagsAreLoaded = function() {\n if (tagReferences)\n return;\n \n tagReferences = {};\n store.forEachTiddler(function(title,tiddler) {\n for(var i=0; i<tiddler.tags.length; i++) {\n var tag = tiddler.tags[i];\n var refedBy = tagReferences[tag];\n if (!refedBy) {\n refedBy = tagReferences[tag] = {count:0, tiddlers: {}};\n }\n refedBy.tiddlers[tiddler.title] = true;\n refedBy.count += 1;\n }\n });\n };\n \n // When any tags are changed reset the TagManager.\n // \n var oldTiddlyWikiSaveTiddler = TiddlyWiki.prototype.saveTiddler;\n TiddlyWiki.prototype.saveTiddler = function(title,newTitle,newBody,modifier,modified,tags) {\n var tiddler = this.fetchTiddler(title);\n var oldTags = tiddler ? tiddler.tags : [];\n var newTags = (typeof tags == "string") ? tags.readBracketedList() : tags;\n\n oldTiddlyWikiSaveTiddler.apply(this, arguments);\n \n if (!abego.arraysAreEqual(oldTags, newTags))\n abego.internal.getTagManager().reset();\n };\n\n // When a tiddler is removed that had tags reset the TagManager.\n //\n var oldTiddlyWikiRemoveTiddler = TiddlyWiki.prototype.removeTiddler;\n TiddlyWiki.prototype.removeTiddler = function(title) {\n var tiddler = this.fetchTiddler(title);\n var resetTagManager = tiddler && tiddler.tags.length > 0;\n \n oldTiddlyWikiRemoveTiddler.apply(this, arguments);\n \n if (resetTagManager) \n abego.internal.getTagManager().reset();\n };\n\n // Resets the TagManager, thus ensures that cached tagging \n // information is discarded and the most recent tag state is used.\n // \n this.reset = function () {\n tagReferences = null;\n };\n \n \n // Returns a TiddlerSet with all tiddlers that have the given tag, \n // or null when the tag is not used in any tiddler.\n //\n // @return [may be null]\n //\n this.getTiddlersWithTag = function(tag) {\n ensureTagsAreLoaded();\n\n var tagInfo = tagReferences[tag];\n return tagInfo ? tagInfo.tiddlers : null;\n };\n \n // Returns an array with the names of all tags defined \n // plus the (optional) extraTags. \n //\n // The tags are sorted alphabetically (caseinsensitive).\n //\n // @params [optional] an array of tags to be added to the list\n //\n //\n this.getAllTags = function(extraTags) {\n ensureTagsAreLoaded();\n \n var result =[];\n for (var i in tagReferences) \n result.push(i);\n \n for (i = 0; extraTags && i < extraTags.length; i++) \n result.pushUnique(extraTags[i], true);\n \n abego.sortIgnoreCase(result);\n \n return result;\n };\n \n // An array with two items per tag\n // result[i][0] : the tag name\n // result[i][1] : TiddlerSet, with tiddlers that are tagged with that tag\n // \n this.getTagInfos = function() {\n ensureTagsAreLoaded();\n \n var result = [];\n for (var tiddler in tagReferences) {\n result.push([tiddler, tagReferences[tiddler]]);\n }\n return result;\n };\n \n var compareTiddlerCountAndTagName = function(a,b) {\n var a1 = a[1];\n var b1 = b[1];\n var d = b[1].count - a[1].count;\n return d != 0 ? d : abego.compareStrings(a[0].toLowerCase(), b[0].toLowerCase());\n };\n \n this.getSortedTagInfos = function() {\n ensureTagsAreLoaded();\n\n var result = this.getTagInfos();\n \n result.sort(compareTiddlerCountAndTagName);\n \n return result;\n };\n \n // @return an array of the tags that "partner" the activeTags,\n // sorted by the number of conjoint occurances.\n //\n this.getPartnerRankedTags = function(activeTags) {\n var partnerTagCounts = {};\n for (var i = 0; i < activeTags.length; i++) {\n var tiddlersWithTag = this.getTiddlersWithTag(activeTags[i]);\n for (var name in tiddlersWithTag) {\n var tiddler = store.getTiddler(name);\n // It may happen that a tiddler is "gone" in the meantime\n if (!(tiddler instanceof Tiddler)) \n continue;\n \n for(var j=0; j<tiddler.tags.length; j++) {\n var tag = tiddler.tags[j];\n var c = partnerTagCounts[tag];\n partnerTagCounts[tag] = c ? c+1 : 1;\n }\n }\n }\n var currentTagSet = abego.toSet(activeTags);\n var result = [];\n for (var n in partnerTagCounts) {\n if (!currentTagSet[n])\n result.push(n);\n }\n // Sort the tags by their partner tag count, then alphabetically\n result.sort(function (a,b) {\n var d = partnerTagCounts[b] - partnerTagCounts[a];\n return d != 0 ? d : abego.compareStrings(a.toLowerCase(), b.toLowerCase());\n });\n\n return result;\n };\n}; // of abego.internal.TagManager\n\nabego.internal.getTagManager = function() {\n if (!abego.internal.gTagManager) abego.internal.gTagManager = new abego.internal.TagManager();\n return abego.internal.gTagManager;\n};\n\n// ========================================================================\n// IntelliTagger ==========================================================\n// ========================================================================\n\n\n(function(){\n var PADDING = 2;\n var BORDERWIDTH = 1;\n var MAX_FAVORITE_TAGS = 30;\n\n var fSuggestionPopup; // DOM:Element\n var fAnchorElement; // DOM:Element\n var fOnTagSelected; // function(e) {...}\n var fSuggestedTags; // [Tag]\n var fActiveTagSet; // TagSet\n var fFavoriteTags; // array of Tags, [optional]\n \n if (!abego.IntelliTagger) abego.IntelliTagger = {};\n\n var getAnchorElement = function() {\n return fAnchorElement;\n };\n \n var isCurrentTag = function(tag) {\n return fActiveTagSet[tag];\n };\n \n var removeLastWord = function(s) {\n var i = s.lastIndexOf(" ");\n return (i >= 0) ? s.substr(0,i) : "";\n };\n \n var lastWordIsFilter = function(inputField) {\n var s = inputField.value;\n var len = s.length; \n return (len > 0 && s[len-1] != ' ');\n };\n\n var ensureFieldEndsWithSpace = function(field) {\n var s = field.value;\n var len = s.length;\n if (len > 0 && s[len-1] != ' ') {\n field.value += ' ';\n }\n };\n \n var updateTag = function(tag, inputField, tiddler) {\n if (lastWordIsFilter(inputField)) \n inputField.value = removeLastWord(inputField.value);\n \n story.setTiddlerTag (tiddler.title,tag,0);\n ensureFieldEndsWithSpace(inputField);\n \n abego.IntelliTagger.assistTagging(inputField, tiddler);\n };\n \n // returns the n-th suggestion, first counting the favorites, then the normal suggestions\n //\n // @param n zero-based.\n // @return [may be null]\n var getNthSuggestion = function(n) {\n if (fFavoriteTags) {\n if (fFavoriteTags.length > n)\n return fFavoriteTags[n];\n \n n -= fFavoriteTags.length;\n }\n \n return (fSuggestedTags && fSuggestedTags.length > n)\n ? fSuggestedTags[n] \n : null;\n };\n\n var useNthSuggestion = function(n, inputField, tiddler) {\n var suggestion = getNthSuggestion(n);\n if (suggestion)\n updateTag(suggestion, inputField, tiddler);\n };\n\n\n var getFilter = function(inputField) {\n var pos = inputField.value.lastIndexOf(" ");\n var filter = (pos >= 0) ? inputField.value.substr(++pos,inputField.value.length) : inputField.value;\n return new RegExp(filter.escapeRegExp(),"i");\n };\n\n\n var countExpectedTags = function(tags, expectedTagsAsProperties) {\n var result = 0;\n for (var i = 0; i<tags.length;i++) \n if (expectedTagsAsProperties[tags[i]])\n result++;\n return result;\n };\n \n // Returns the number tags that have the same count of tiddlers\n // as the index-th tagInfo. \n // \n // The index-th tag is included in the returned number.\n // \n // @param sortedTagInfo Array of TagInfos, sorted by count of tiddlers.\n //\n var getNumberOfTagsWithSameCount = function(sortedTagInfos, index, filterRE) {\n var result = 1;\n var c = sortedTagInfos[index];\n for (var i = index+1; i < sortedTagInfos.length; i++) \n if (sortedTagInfos[i][1].count == c) {\n if (sortedTagInfos[i][0].match(filterRE))\n result++;\n } else\n break;\n return result;\n };\n \n var getInitialTagSuggestions = function(filterRE, maxCount) {\n var tagInfos = abego.internal.getTagManager().getSortedTagInfos();\n var result =[];\n var lastCount = 0;\n for (var i = 0; i < tagInfos.length; i++) {\n var c = tagInfos[i][1].count;\n \n // Stop adding tags to the result if not all tags with that count of tiddlers would fit into the result.\n if (c != lastCount) {\n if (maxCount && (result.length + getNumberOfTagsWithSameCount(tagInfos, i, filterRE) > maxCount)) \n break;\n lastCount = c;\n }\n // Don't add tags that are only used in one tiddler.\n if (c == 1) \n break;\n var s = tagInfos[i][0];\n if (s.match(filterRE))\n result.push(s);\n }\n return result;\n };\n \n var getAllFilteredTags = function(filterRE, extraTags) {\n return abego.filterStrings(\n abego.internal.getTagManager().getAllTags(extraTags),\n filterRE);\n };\n\n // Refreshes the tagSuggestions window\n //\n var refreshPopup = function() {\n if (!fSuggestionPopup) \n return;\n \n // Load the template for the YourSearchResult\n var html = store.getTiddlerText("IntelliTaggerMainTemplate");\n if (!html) \n html = "<b>Tiddler IntelliTaggerMainTemplate not found</b>";\n fSuggestionPopup.innerHTML = html;\n \n // Expand the template macros etc.\n applyHtmlMacros(fSuggestionPopup,null);\n refreshElements(fSuggestionPopup,null);\n };\n \n var onTagClicked = function(e) { \n if (!e) var e = window.event;\n var tag = this.getAttribute("tag");\n if (fOnTagSelected)\n fOnTagSelected.call(this,tag, e);\n \n return false;\n };\n \n var appendTags = function(place, tags, suggestionIndex, excludeTags) {\n if (!tags)\n return;\n \n var excludeTagSet = excludeTags ? abego.toSet(excludeTags) : {};\n var n = tags.length;\n for (var i = 0; i < n; i++) {\n var tag = tags[i];\n if (excludeTagSet[tag])\n continue;\n \n if (i > 0) \n createTiddlyElement(place,"span",null,"tagSeparator", " | ");\n \n var shortcutText = "";\n var placeForButton = place;\n if (suggestionIndex < 10) {\n // create a wrapping span that ensures the number and the text are not linebreaked.\n placeForButton = createTiddlyElement(place,"span",null,"numberedSuggestion");\n \n suggestionIndex++;\n var key = suggestionIndex < 10 ? ""+(suggestionIndex) : "0";\n createTiddlyElement(placeForButton,"span",null,"suggestionNumber", key+") ");\n var fastKeyText = suggestionIndex == 1 ? "Ctrl-Space or " : "";\n shortcutText = " (Shortcut: %1Alt-%0)".format([key, fastKeyText]);\n }\n\n var shiftClickToolTip = config.views.wikified.tag.tooltip.format([tag]);\n var normalClickToolTip = (isCurrentTag(tag) ? "Remove tag '%0'%1" : "Add tag '%0'%1").format([tag,shortcutText]);\n var tooltip = "%0; Shift-Click: %1".format([normalClickToolTip, shiftClickToolTip]);\n var btn = createTiddlyButton(\n placeForButton,\n tag,\n tooltip, \n onTagClicked, \n isCurrentTag(tag) ? "currentTag" : null);\n btn.setAttribute("tag",tag);\n }\n };\n \n var scrollVisible = function() {\n // Scroll the window to make the fSuggestionPopup page (and the anchorElement) visible.\n if (fSuggestionPopup) window.scrollTo(0,ensureVisible(fSuggestionPopup));\n if (getAnchorElement()) window.scrollTo(0,ensureVisible(getAnchorElement()));\n };\n\n // Close the suggestions window when the user clicks on the document\n // (and not into the getAnchorElement or in the suggestions window)\n //\n var onDocumentClick = function(e) {\n if (!e) var e = window.event;\n if (!fSuggestionPopup) \n return;\n \n var target = resolveTarget(e);\n if (target == getAnchorElement()) return; \n if (abego.isDescendantOrSelf(fSuggestionPopup, target)) return; \n \n abego.IntelliTagger.close();\n };\n addEvent(document,"click",onDocumentClick);\n \n // We added a space to the tags edit field. To avoid that the \n // tiddler is marked as "changed" just because of that we trim\n // the field value\n //\n var oldGatherSaveFields = Story.prototype.gatherSaveFields;\n Story.prototype.gatherSaveFields = function(e,fields) {\n oldGatherSaveFields.apply(this, arguments);\n var tags = fields.tags;\n if (tags) \n fields.tags = tags.trim();\n };\n \n\n var focusTagsField = function(title) {\n story.focusTiddler(title,"tags");\n var tags = abego.getTiddlerField(story, title, "tags");\n if (tags) {\n var len = tags.value.length;\n abego.setRange(tags, len, len);\n window.scrollTo(0,ensureVisible(tags));\n }\n };\n \n\n // Attach the assistTagging to the "tags" edit field.\n //\n var oldEditHandler = config.macros.edit.handler;\n config.macros.edit.handler = function(place,macroName,params,wikifier,paramString,tiddler) {\n oldEditHandler.apply(this, arguments);\n var field = params[0];\n if((tiddler instanceof Tiddler) && field == "tags") {\n // Just added the "edit tags" field. \n // Attach it to the "Tag Suggestions" feature.\n var inputField = place.lastChild;\n inputField.onfocus = function(e) {\n abego.IntelliTagger.assistTagging(inputField, tiddler);\n setTimeout(\n function() {\n focusTagsField(tiddler.title);\n }, 100);\n\n };\n inputField.onkeyup = function(e) {\n if (!e) var e = window.event;\n if (e.altKey && !e.ctrlKey && !e.metaKey && (e.keyCode >= 48 && e.keyCode <= 57)) {\n useNthSuggestion(e.keyCode == 48 ? 9 : e.keyCode-49, inputField, tiddler);\n } else if (e.ctrlKey && e.keyCode == 32) {\n useNthSuggestion(0, inputField, tiddler);\n }\n \n setTimeout(\n function() {\n abego.IntelliTagger.assistTagging(inputField, tiddler);\n }, 100);\n return false;\n };\n \n // ensure that the tags text ends with a space \n // (otherwise the last word is used as a filter when the field gets the focus)\n ensureFieldEndsWithSpace(inputField);\n }\n };\n \n var onEditTags = function(e) {\n if (!e) var e = window.event;\n var target = resolveTarget(e);\n \n var title = target.getAttribute("tiddler");\n if (title) {\n story.displayTiddler(target,title,"IntelliTaggerEditTagsTemplate", false);\n focusTagsField(title);\n }\n return false;\n };\n \n // Add an "[edit]" button to the "tags" field that is displayed with the tiddler in the ViewTemplate.\n // Pressing the button allows editing the tags only, with the text still being displayed in wikified form.\n //\n var oldTagsHandler = config.macros.tags.handler;\n config.macros.tags.handler = function(place,macroName,params,wikifier,paramString,tiddler) {\n oldTagsHandler.apply(this, arguments);\n\n abego.IntelliTagger.createEditTagsButton(tiddler, createTiddlyElement(place.lastChild,"li"));\n };\n \n // close the Suggestion Window when the tiddler is no longer edited\n // (i.e. the tag edit inputfield is gone.)\n // \n // (Note: we must poll this condition since onblur on the input field \n // cannot be used since every click into the suggestion window results\n // in a lost focus/blur)\n //\n var closeIfAnchorElementIsHidden = function() {\n if (fSuggestionPopup && fAnchorElement && !abego.isDescendantOrSelf(document, fAnchorElement)) \n abego.IntelliTagger.close();\n };\n setInterval(closeIfAnchorElementIsHidden, 100);\n \n//----------------------------------------------------------------------------\n// The public API\n//----------------------------------------------------------------------------\n \n // @param suggestedTags \n // array of strings representing the tags to be suggested.\n //\n // @param activeTags \n // array of strings representing the tags currently "active".\n //\n // @param favoriteTags [optional] \n // a subset of the suggested tags that are "favorites". \n // I.e. They should be presented first etc.\n //\n // @param anchorElement [optional]\n // when defined the suggestions are displayed "close" to the anchorElement. \n // The page is scrolled to make the anchorElement visible.\n // When the anchorElement is not defined the suggestions are displayed in the\n // center of the window.\n //\n // @param onTagSelected [optional]\n // function(tag, e) to be called when a tag is selected.\n //\n abego.IntelliTagger.displayTagSuggestions = function(suggestedTags, activeTags, favoriteTags, anchorElement, onTagSelected) {\n fSuggestedTags = suggestedTags;\n fActiveTagSet = abego.toSet(activeTags);\n fFavoriteTags = favoriteTags;\n fAnchorElement = anchorElement;\n fOnTagSelected = onTagSelected;\n \n if (!fSuggestionPopup) {\n fSuggestionPopup = createTiddlyElement(document.body,"div",null,"intelliTaggerSuggestions");\n fSuggestionPopup.style.position = "absolute";\n }\n \n refreshPopup();\n abego.openAsPopup(fSuggestionPopup);\n \n if (getAnchorElement()) {\n var w = getAnchorElement().offsetWidth;\n if (fSuggestionPopup.offsetWidth < w) {\n fSuggestionPopup.style.width = (w-2*(PADDING+BORDERWIDTH)) + "px";\n }\n abego.moveBelowAndClip(fSuggestionPopup, getAnchorElement());\n } else {\n abego.centerOnWindow(fSuggestionPopup);\n }\n\n scrollVisible();\n };\n \n // Shows the Tag Suggestion Popup for the given tiddler, below the specified inputField.\n //\n abego.IntelliTagger.assistTagging = function(inputField, tiddler) {\n var filterRE = getFilter(inputField);\n var s = inputField.value;\n if (lastWordIsFilter(inputField)) \n s = removeLastWord(s);\n var activeTags = s.readBracketedList();\n var favoriteTags = activeTags.length > 0 \n ? abego.filterStrings(abego.internal.getTagManager().getPartnerRankedTags(activeTags), filterRE, MAX_FAVORITE_TAGS)\n : getInitialTagSuggestions(filterRE, MAX_FAVORITE_TAGS);\n abego.IntelliTagger.displayTagSuggestions(\n getAllFilteredTags(filterRE,activeTags), \n activeTags,\n favoriteTags, \n inputField,\n function(tag, e) {\n if (e.shiftKey) {\n onClickTag.call(this,e);\n } else\n updateTag(tag, inputField, tiddler);\n });\n };\n \n // Closes the Tag Suggestions Popup\n //\n abego.IntelliTagger.close = function() {\n abego.closePopup(fSuggestionPopup);\n fSuggestionPopup = null;\n return false;\n };\n\n // Creates an TiddlyButton at the given place to edit the tags of the given tiddler.\n //\n abego.IntelliTagger.createEditTagsButton = function(tiddler, place, text, tooltip, className, id, accessKey) {\n if (!text) text = "[edit]";\n if (!tooltip) tooltip = "Edit the tags";\n if (!className) className = "editTags";\n \n var editButton = createTiddlyButton(place,text,tooltip, onEditTags, className, id, accessKey);\n editButton.setAttribute("tiddler", (tiddler instanceof Tiddler) ? tiddler.title : String(tiddler));\n \n return editButton;\n };\n\n \n//----------------------------------------------------------------------------\n// Macros\n//----------------------------------------------------------------------------\n\n// ====Macro intelliTagger ================================================\n\n config.macros.intelliTagger = {\n // Standard Properties\n label: "intelliTagger",\n\n handler : function(place,macroName,params,wikifier,paramString,tiddler) {\n var namesAndValues = paramString.parseParams("list",null, true);\n var actions = namesAndValues[0]["action"];\n for (var i = 0; actions && i < actions.length; i++) {\n var actionName = actions[i];\n var action = config.macros.intelliTagger.subhandlers[actionName];\n \n if (!action) \n abego.alertAndThrow("Unsupported action '%0'".format([actionName]));\n \n action(place,macroName,params,wikifier,paramString,tiddler);\n }\n },\n \n subhandlers: {\n \n showTags : function(place,macroName,params,wikifier,paramString,tiddler) {\n appendTags(place, fSuggestedTags, fFavoriteTags ? fFavoriteTags.length : 0, fFavoriteTags);\n },\n \n showFavorites : function(place,macroName,params,wikifier,paramString,tiddler) {\n appendTags(place, fFavoriteTags, 0);\n },\n \n closeButton : function(place,macroName,params,wikifier,paramString,tiddler) {\n var button = createTiddlyButton(place, "close", "Close the suggestions", abego.IntelliTagger.close);\n },\n\n version : function(place) {\n var t = "IntelliTagger %0.%1.%2".format(\n [version.extensions.IntelliTaggerPlugin.major, \n version.extensions.IntelliTaggerPlugin.minor, \n version.extensions.IntelliTaggerPlugin.revision]);\n var e = createTiddlyElement(place, "a");\n e.setAttribute("href", "http://tiddlywiki.abego-software.de/#IntelliTaggerPlugin");\n e.innerHTML = '<font color="black" face="Arial, Helvetica, sans-serif">'+t+'<font>';\n },\n\n copyright : function(place) {\n var e = createTiddlyElement(place, "a");\n e.setAttribute("href", "http://tiddlywiki.abego-software.de");\n e.innerHTML = '<font color="black" face="Arial, Helvetica, sans-serif">&copy; 2006 <b><font color="red">abego</font></b> Software<font>';\n }\n }\n };\n \n})();\n\n\nconfig.shadowTiddlers["IntelliTaggerStyleSheet"] = \n "/***\sn"+\n "!~IntelliTagger Stylesheet\sn"+\n "***/\sn"+\n "/*{{{*/\sn"+\n ".intelliTaggerSuggestions {\sn"+\n "\stposition: absolute;\sn"+\n "\stwidth: 600px;\sn"+\n "\sn"+\n "\stpadding: 2px;\sn"+\n "\stlist-style: none;\sn"+\n "\stmargin: 0;\sn"+\n "\sn"+\n "\stbackground: #eeeeee;\sn"+\n "\stborder: 1px solid DarkGray;\sn"+\n "}\sn"+\n "\sn"+\n ".intelliTaggerSuggestions .currentTag {\sn"+\n "\stfont-weight: bold;\sn"+\n "}\sn"+\n "\sn"+\n ".intelliTaggerSuggestions .suggestionNumber {\sn"+\n "\stcolor: #808080;\sn"+\n "}\sn"+\n "\sn"+\n ".intelliTaggerSuggestions .numberedSuggestion{\sn"+\n "\stwhite-space: nowrap;\sn"+\n "}\sn"+\n "\sn"+\n ".intelliTaggerSuggestions .intelliTaggerFooter {\sn"+\n "\stmargin-top: 4px;\sn"+\n "\stborder-top-width: thin;\sn"+\n "\stborder-top-style: solid;\sn"+\n "\stborder-top-color: #999999;\sn"+\n "}\sn"+\n ".intelliTaggerSuggestions .favorites {\sn"+\n "\stborder-bottom-width: thin;\sn"+\n "\stborder-bottom-style: solid;\sn"+\n "\stborder-bottom-color: #999999;\sn"+\n "\stpadding-bottom: 2px;\sn"+\n "}\sn"+\n "\sn"+\n ".intelliTaggerSuggestions .normalTags {\sn"+\n "\stpadding-top: 2px;\sn"+\n "}\sn"+\n "\sn"+\n ".intelliTaggerSuggestions .intelliTaggerFooter .button {\sn"+\n "\stfont-size: 10px;\sn"+\n "\sn"+\n "\stpadding-left: 0.3em;\sn"+\n "\stpadding-right: 0.3em;\sn"+\n "}\sn"+\n "\sn"+\n "/*}}}*/\sn";\n \nconfig.shadowTiddlers["IntelliTaggerMainTemplate"] = \n "<!--\sn"+\n "{{{\sn"+\n "-->\sn"+\n "<div class=\s"favorites\s" macro=\s"intelliTagger action: showFavorites\s"></div>\sn"+\n "<div class=\s"normalTags\s" macro=\s"intelliTagger action: showTags\s"></div>\sn"+\n "<!-- The Footer (with the Navigation) ============================================ -->\sn"+\n "<table class=\s"intelliTaggerFooter\s" border=\s"0\s" width=\s"100%\s" cellspacing=\s"0\s" cellpadding=\s"0\s"><tbody>\sn"+\n " <tr>\sn"+\n "\st<td align=\s"left\s">\sn"+\n "\st\st<span macro=\s"intelliTagger action: closeButton\s"></span>\sn"+\n "\st</td>\sn"+\n "\st<td align=\s"right\s">\sn"+\n "\st\st<span macro=\s"intelliTagger action: version\s"></span>, <span macro=\s"intelliTagger action: copyright \s"></span>\sn"+\n "\st</td>\sn"+\n " </tr>\sn"+\n "</tbody></table>\sn"+\n "<!--\sn"+\n "}}}\sn"+\n "-->\sn";\n \nconfig.shadowTiddlers["IntelliTaggerEditTagsTemplate"] = \n "<!--\sn"+\n "{{{\sn"+\n "-->\sn"+\n "<div class='toolbar' macro='toolbar +saveTiddler -cancelTiddler'></div>\sn"+\n "<div class='title' macro='view title'></div>\sn"+\n "<div class='tagged' macro='tags'></div>\sn"+\n "<div class='viewer' macro='view text wikified'></div>\sn"+\n "<div class='toolbar' macro='toolbar +saveTiddler -cancelTiddler'></div>\sn"+\n "<div class='editor' macro='edit tags'></div><div class='editorFooter'><span macro='message views.editor.tagPrompt'></span><span macro='tagChooser'></span></div>\sn"+\n "<!--\sn"+\n "}}}\sn"+\n "-->\sn"; \n \nconfig.shadowTiddlers["BSD open source license (abego Software)"] = "See [[Licence|http://tiddlywiki.abego-software.de/#%5B%5BBSD%20open%20source%20license%5D%5D]].";\nconfig.shadowTiddlers["IntelliTaggerPlugin Documentation"] = "[[Documentation on abego Software website|http://tiddlywiki.abego-software.de/doc/IntelliTagger.pdf]].";\nconfig.shadowTiddlers["IntelliTaggerPlugin SourceCode"] = "[[Plugin source code on abego Software website|http://tiddlywiki.abego-software.de/src/Plugin-IntelliTagger-src.js]]";\n \nsetStylesheet(store.getTiddlerText("IntelliTaggerStyleSheet"),"intelliTagger");\n\n} // of single install\n\n// Used Globals (for JSLint) ==============\n// ... JavaScript Core\n/*global alert, document, setTimeout, setInterval */\n// ... TiddlyWiki Core\n/*global Story, Tiddler, TiddlyWiki, addEvent, applyHtmlMacros, createTiddlyButton, createTiddlyElement, ensureVisible, findPosX, findPosY, findScrollX, findScrollY, findWindowHeight, findWindowWidth, onClickTag, refreshElements, resolveTarget, story */
/***\n!~IntelliTagger Stylesheet\n***/\n/*{{{*/\n.intelliTaggerSuggestions {\n position: absolute;\n width: 600px;\n padding: 2px;\n list-style: none;\n margin: 0;\n background: #CCDDCC;\n border: 1px solid DarkGray;\n}\n\n.intelliTaggerSuggestions .currentTag {\n font-weight: bold;\n}\n\n.intelliTaggerSuggestions .suggestionNumber {\n color: #000000;\n}\n\n.intelliTaggerSuggestions .numberedSuggestion{\n white-space: nowrap;\n}\n\n.intelliTaggerSuggestions .intelliTaggerFooter {\n margin-top: 4px;\n border-top-width: thin;\n border-top-style: solid;\n border-top-color: #999999;\n}\n.intelliTaggerSuggestions .favorites {\n border-bottom-width: thin;\n border-bottom-style: solid;\n border-bottom-color: #999999;\n padding-bottom: 2px;\n}\n\n.intelliTaggerSuggestions .normalTags {\n padding-top: 2px;\n}\n\n.intelliTaggerSuggestions .intelliTaggerFooter .button {\n font-size: 8px;\n padding-left: 0.3em;\n padding-right: 0.3em;\n}\n\n/*}}}*/\n
<<timeline better:true onlyTag:journal sortBy:modified maxEntries:30>>
- a player of [[infinite|http://infiniteplaythemovie.com/]] games;\n- the author of this notebook;
<<tiddler GTDMenu>>\n[[About]] [[Formatting Help|TextHelp]] [[GTD Help|HelpFile]] [[Tiddly Help|http://www.blogjones.com/TiddlyWikiTutorial.html]] [[TWFAQ|http://twfaq.tiddlyspot.com/]] [[Feed|index.xml]]\n
<<<\nMichael Riconosciuto is one of the original architects of the [[PROMIS]] backdoor. PROMIS was a people-tracking software system sold to intelligence organizations and government drug agencies worldwide. The global dispersion of PROMIS was part of a U.S. plot to spy on other spy agencies.\n\nRiconosciuto, who was Director of Research for a [[Wackenhut Corporation]] / [[Cabazon Indian Reservation]] joint venture, oversaw a group of several dozen people who worked out of business offices in nearby Indio, California. According to the testimony of [[Robert Booth Nichols]], a CIA agent associated with [[Meridian International Logistics]] and connected to [[Music Corporation of America]] ([[MCA]]), Riconosciuto was in frequent contact with [[Bobby Inman]], Director of the National Security Agency ([[NSA]]) and then Deputy Director of the Central Intelligence Agency ([[CIA]]), during this time.\n\nSince intelligence computers are, for security reasons, usually not connected to external networks, the original backdoor was a broadcast signal. The PROMIS software was often sold in connection with computer hardware (such as a Prime computer) using a specialized chip. The chip would broadcast the contents of the existing database to monitoring vans or collection satellites using digital [[spread spectrum]] techniques whenever the software was run.\n\nSpread spectrum techniques offer a way to mask, or disguise, a signal by making it appear as "noise" with respect to another signal. For example, one may communicate covertly on the same spectrum as a local TV broadcast signal. From the point of view of a TV receiver, the covert communication appears as noise, and is filtered out. From the point of view of the covert channel, the TV signal appears as noise. In the case of the PROMIS broadcast channel, the signal was disguised as ordinary computer noise--the type of stuff that must be reduced for TEMPEST certification in the U.S.\n\nIn spread spectrum frequency communication, the transmitted spectrum is much wider than what is really necessary. In digital communication, the transmission widths of digital signals are expanded so that many "bit periods" are needed to represent one bit at baseband. This results in an improvement in the signal-to-noise- ratio. Spread spectrum techniques are used extensively in covert military communications and secure satellite systems.\n\nThe covert communication channel operates off a pseudo-random binary sequence, such as a [[stream cipher]]. Stream ciphers differ from [[block cipher]]s such as [[DES]] (the Data Encryption Standard) widely used in banking. [[More Here|http://orlingrabbe.com/ricono.htm]].\n<<<\n\n<<<\n[[When Osama Bin Ladin Was Tim Osman|http://orlingrabbe.com/binladin_timosman.htm]]\nby J. Orlin Grabbe\n(2001)\n\nThe two men headed to the Hilton Hotel in Sherman Oaks, California in the late Spring of 1986 were on their way to meet representatives of the mujahadeen, the Afghan fighters resisting the Soviet invasion of Afghanistan.\n\nOne of the two, [[Ted Gunderson]], had had a distinguished career in the [[FBI]], serving as some sort of supervisor over Special Agents in the early 60s, as head of the Dallas field office from 1973-75, and as head of the Los Angeles field office from 1977-1979. He retired to become an investigator for, among others, well-known attorney [[F. Lee Bailey]]. And all along the way, Gunderson, whether or not actually a CIA contract agent, had been around to provide services to various CIA and National Security Council operations, as he was doing now.\n\nIn more recent years Gunderson was to become controversial for his investigations into [[child prostitution rings]], after he became convinced of the innocence of an Army medical doctor named [[Jeffrey McDonald]], who had been convicted of the murder of his wife and three young children in the 1970s. This has led to various attempts by the patrons and operators of the child prostitution industry to smear Gunderson's reputation.\n\n''Michael Riconosciuto'' was there to discuss assisting the mujahadeen with [[MANPAD]]s—Man Portable Air Defense Systems. Stinger missiles were one possibility. If the U.S. would permit their export, Riconosciuto could modify the Stinger's electronics, so the guided missile would still be effective against Soviet aircraft, but would not be a threat to U.S. or NATO forces.\n\nBut Riconosciuto had another idea. Through his connections with the Chinese industrial and military group [[Norinco]], he could obtain the basic components for the unassembled Chinese 107 MM rocket system. These could be reconfigured into a man-portable, shoulder-fired, anti-aircraft guided missile sytem, and produced in Pakistan at a facility called the [[Pakistan Ordinance Works]]. The [[mujahadeen]] would then have a lethal weapon against Soviet helicopter, observation, and transport aircraft.\n\nRiconosciuto was more than just an expert on missile electronics; he was also an expert on electronic computers and associated subjects such as cryptology (see my "Michael Riconosciuto on Encryption" - linked in the first block-quoted text).\n\nRiconosciuto was a prodigy who had grown up in the spook community. The Riconosciuto family had once run Hercules, California, as a company town. In the early days (1861) a company called California Powder Works had been established in Santa Cruz, CA. It later purchased land on San Pablo Bay, and in 1881 started producing dynamite, locating buildings in gullies and ravines for safety purposes. A particularly potent type of black powder was named "Hercules Powder", which gave the name to the town of Hercules, formally incorporated in 1900. In World War I, Hercules became the largest producer of TNT in the U.S. Hercules, however, had gotten out of the explosives business by 1940 when an anhydrous ammonia plant was constructed. In 1959 Hercules began a new manufacturing facility to produce methanol, formaldehyde, and urea formaldehyde. In 1966 the plant was sold to Valley Nitrogen Producers. Labor problems led to a plant closure in 1977. In 1979 the plant and site was purchased by a group of investors calling themselves [[Hercules Properties, Ltd.]]\n\nHowever, Michael and his father [[Marshall Riconosciuto]], a friend of [[Richard Nixon]], continued to run the [[Hercules Research Corporation]]. In the early 1980s Michael also served as the Director of Research for a joint venture between the [[Wackenhut Corporation]] of Coral Gables, Florida, and the Cabazon Band of Indians in Indio, California. Riconosciuto's talents were much in demand. He had created the [[a-neutronic bomb]] (or "Electro-Hydrodynamic Gaseous Fuel Device"), which sank the ground level of the Nevada test site by 30 feet when a prototype was tested. [[Samuel Cohen]], the inventor of the [[neutron bomb]], said of Riconosciuto: "I've spoken to Michael Riconosciuto (the inventor of the a-neutronic bomb) and he's an extraordinarily bright guy. I also have a hunch, which I can't prove, that they both (Riconosciuto and Lavos, his partner) indirectly work for the [[CIA]]."\n\nRiconosciuto's bomb made suitcase nukes obsolete, because it achieved near-atomic explosive yields, but could be more easily minaturized. You could have a suitcase a-neutronic bomb, or a briefcase a-neutronic bomb, or simply a lady's purse a-neutronic bomb. Or just pull out your wallet for identification and —. The [[Meridian Arms Corporation]], as well as the Universities of California and Chicago owned a piece of the technology.\n\nBut there was more than explosives in the portfolios of the CIA agents who surrounded Riconosciuto like moths around a candle. Both [[Robert Booth Nichols]], the shady head of Meridian Arms Corporation (with both CIA and organized crime conections), and Dr. [[John Phillip Nichols]], the manager of the Cabazon reservation, were involved in bio-warfare work—the first in trying to sell bio-warfare products to the army through Wackenhut, the second in giving tribal permission for research to take place at Cabazon. According to Riconosciuto, the Pentagon's Defense Advanced Research Projects Agency ([[DARPA]]) was in charge of the classified contracts for [[biological warfare]] research. Riconosciuto would later testify under oath that [[Stormont Laboratories]] was involved in the DARPA-Wackenhut-Cabazon project. Jonathan Littman, a reporter for the San Francisco Chronicle would relate: "Cabazons and Wackenhut appeared to be acting as middlemen between the Pentagon's DARPA and Stormont Laboratories, a small facility in Woodland near Sacramento."\n\n''The Race Weapon''\n\nRiconosciuto would make additional claims about [[Bio-Rad]] corporation, a medical supplier which had gradually taken over Hercules, California. They were also, Riconosciuto would say, covertly engaged in bio-warfare research—producing some of the deadliest toxins known to man. The focus of Bio-Rad's research was said to be bio-active elements that could be tailored to attack those with certain types of DNA. Weapons could thus be produced that were specifically designed to wipe out specific races or genetic classes of human beings. (Alternatively, particular DNA types could be immunized against a deadly biological agent; the agent could then be released, and everyone else would die.)\n\nA couple of years later, [[Meridian International Logistics]], the parent company of Meridian Arms, was to farm similar research out to the Japanese. This included (according to minutes of a corporate meeting dated Aug. 26, 1988) methods for "induction and activation of cytotoxic T-lymphocytes". Associated with Meridian's Robert Booth Nichols in a Middle Eastern operation called [[FIDCO]], a company that ran arms into and heroin out of Lebanon's Beqaa (Bekaa) Valley, was [[Harold Okimoto]], a high-ranking member of the Yakuza. Okimoto had longed worked under [[Frank Carlucci]] (who served as Secretary of Defense and Deputy Director of the CIA before becoming Chairman of The [[Carlyle Group]]). Okimoto owned food concessions in casinos around the world — Las Vega, Reno, Macao, and the Middle East. (Free drinks and anthrax while you play blackjack, anyone?)\n\nMeeting Riconosciuto and Gunderson at the hotel were two representatives of the mujahadeen, waiting to discuss their armament needs. One of the two was named "[[Ralph Olberg]]." The other one was called [[Tim Osman]] (or Ossman).\n\n"Ralph Olberg" was an American businessman who was leading the procurement of American weapons and technology on behalf of the Afghan rebels. He worked through the Afghan desk at the U.S. State Department, as well as through Senator [[Hubert Humphrey]]'s office. Olberg looked after the Afghanis through a curious front called [[MSH]] — Management Sciences for Health.\n\nThe other man, dressed in Docker's clothing, was not a native Afghan any more than Olberg was. He was a 27-year-old Saudi. Tim Osman (Ossman) has recently become better known as [[Osama Bin Ladin]]. "Tim Osman" was the name assigned to him by the [[CIA]] for his tour of the U.S. and U.S. military bases, in search of political support and armaments.\n\nGunderson and Riconosciuto were not on an altruistic mission. They had some conditions for their help. And they had some bad news to deliver. The mujahadeen needed to be willing to test new weapons in the field and to return a research report, complete with photos.\n\nThe bad news was that some factions of the CIA didn't feel that Oldberg and Osman's group were the real representatives of the Afghans. Upon hearing this both Tim and Ralph were indignant. They wanted to mount a full-court press. Round up other members of their group and do a congressional and White House lobbying effort in Washington, D.C.\n\n"Pleased to meet you. Hope you guess my name."\n—The Rolling Stones, Sympathy for the Devil\n\nDid the lobbying effort take place? I don't know. There is some evidence that Tim Osman and Ralph Oldberg visited the White House. There is certainty that Tim Osman toured some U.S. military bases, even receiving special demonstrations of the latest equipment. Why hasn't this been reported in the major media?\n\nOne week after giving an affidavit to [[Inslaw]] regarding the [[PROMIS]] software in 1991, Riconosciuto was arrested on trumped-up drug charges. The Assistant U.S. Attorney prosecuting the case attempted to cover up Riconosciuto's intelligence background by claiming to the jury he was "delusional." A TV station came and pointed a camera out at the desert at Cabazon and said, "Riconosciuto says he modified the PROMIS software here." Of course Riconosciuto didn't modify the software out between the cacti and yucca. Sand isn't good for computers. He did the modifications in offices in nearby Indio, California. The AUSA told reporters Riconosciuto had been diagnosed with a mental condition, the implication being "he's making all this stuff up". Yes, there had been a mental evaluation of Riconosciuto. I have a copy of the report. The diagnosis? Here it is: NO MENTAL DISORDER. The Department of Justice consistently and maliciously lied to the jury, just as had been threatened by Justice Department official [[Peter Viednicks]] if Riconosciuto cooperated with the congressional investigation of PROMIS.\n\nIf the war against Osama Bin Ladin (Tim Osman) is not a total fraud, then what is Michael Riconosciuto doing in prison? Why doesn't he have an office next to [[Colin Powell]] so he can give realistic advice on Bin Ladin's thinking? And where is Ralph Olberg?\n\nThirty-four days before the East African embassy bombings of August 7, 1998, Riconosciuto notified the [[FBI]] in Miami that the bombings were going to take place. Two days prior to the bombings he requested of [[BOP]] (Bureau of Prisons) officials at the Federal Corrections Institution ([[FCI]]) in Coleman, FL., that he be allowed to call [[ECOMOG]] security headquarters to warn African officials. The BOP denied the request. Riconosciuto was mystified at being ignored by the relevant government authorities. I'm not mystified. I suspect the reason Riconosciuto was ignored was that the relevant parties, including especially the Miami FBI office, knew all along the bombings would take place. And they wanted them to happen.\n\nThe same is true with respect to the recent plane bombings of the WTC. It wasn't an intelligence "failure". The terrorist acts were deliberately allowed to happen. The actors may have been foreign. But the stage directors appear to have been all along here in the U.S. Cui bono?\n\nIsn't it time to let Michael Riconosciuto out of prison, and wipe the slate clean of the trumped up drug charges, and let him be a national security advisor—at least with respect to the government's pursuit of Osama Bin Ladin? Isn't it time to quit pretending Osama Bin Ladin came out of nowhere?\n\nThis is not an academic argument. Sources say three dozen MANPADs have been imported into Quebec, Canada, from Colombia (where they arrived from Eastern Europe). The missile shipments followed the "northern" drug route — from Colombia into Canada. The missiles involved are Russian Strellas and Iglas. These will serve just fine to take down commercial airline flights. Just like TWA 800. Which group of terrorists has the missiles? Meanwhile, how many biological warfare agents are in the hands of organized crime? Maybe you should ask Riconosciuto about all this.\n<<<
/***\n''NestedSlidersPlugin for TiddlyWiki version 1.2.x and 2.0''\n^^author: Eric Shulman\nsource: http://www.elsdesign.com/tiddlywiki/#NestedSlidersPlugin\nlicense: [[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]]^^\n\nQuickly make any tiddler content into an expandable 'slider' panel, without needing to create a separate tiddler to contain the slider content. Optional syntax allows ''default to open'', ''custom button label/tooltip'' and ''automatic blockquote formatting.''\n\nYou can also 'nest' these sliders as deep as you like (see complex nesting example below), so that expandable 'tree-like' hierarchical displays can be created. This is most useful when converting existing in-line text content to create in-line annotations, footnotes, context-sensitive help, or other subordinate information displays.\n\nFor more details, please click on a section headline below:\n++++!!!!![Configuration]>\nDebugging messages for 'lazy sliders' deferred rendering:\n<<option chkDebugLazySliderDefer>> show debugging alert when deferring slider rendering\n<<option chkDebugLazySliderRender>> show debugging alert when deferred slider is actually rendered\n//''note: Enabling these settings may produce unexpected results. Use at your own risk.''//\n===\n++++!!!!![Usage]>\nWhen installed, this plugin adds new wiki syntax for embedding 'slider' panels directly into tiddler content. Use {{{+++}}} and {{{===}}} to delimit the slider content. Additional optional syntax elements let you specify 'default to open', 'cookiename', 'heading level', 'custom label/tooltip', 'automatic blockquote' and 'deferred rendering'.\n//{{{\n++++(cookiename)!!!!![label|tooltip]>...\ncontent goes here\n===\n//}}}\nwhere:\n* {{{+++}}} (or {{{++++}}}) and {{{===}}}^^\nmarks the start and end of the slider definition, respectively. When the extra {{{+}}} is used, the slider will be open when initially displayed.^^\n* {{{(cookiename)}}}^^\nsave the slider opened/closed state, and restore this state whenever the slider is re-rendered.^^\n* {{{!}}} through {{{!!!!!}}}^^\ndisplays the slider label using a formatted headline (Hn) style instead of a button/link style^^\n* {{{[label]}}} or {{{[label|tooltip]}}}^^\nuses custom label/tooltip. (defaults are: ">/more..." and "</less...")^^\n* {{{">"}}} //(without the quotes)//^^\nautomatically adds blockquote formatting to slider content^^\n* {{{"..."}}} //(without the quotes)//^^\ndefers rendering of closed sliders until the first time they are opened. //Note: deferred rendering may produce unexpected results in some cases. Use with care.//^^\n\n//Note: to make slider definitions easier to read and recognize when editing a tiddler, newlines immediately following the {{{+++}}} 'start slider' or preceding the {{{===}}} 'end slider' sequence are automatically supressed so that excess whitespace is eliminated from the output.//\n===\n++++!!!!![Examples]>\nsimple in-line slider: \n{{{\n+++\n content\n===\n}}}\n+++\n content\n===\n----\ndefault to open: \n{{{\n++++\n content\n===\n}}}\n++++\n content\n===\n----\nuse a custom label: \n{{{\n+++[label]\n content\n===\n}}}\n+++[label]\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, custom label/tooltip, blockquoted)//\n{{{\n++++(testcookie)[label|tooltip]>\n content\n===\n}}}\n++++(testcookie)[label|tooltip]>\n content\n===\n----\ncomplex nesting example:\n{{{\n+++[get info...|click for information]>\n put some general information here, plus a slider with more specific info:\n +++[view details...|click for details]>\n put some detail here, which could include some +++[definitions]>explaining technical terms===\n ===\n===\n}}}\n+++[get info...|click for information]>\n put some general information here, plus a slider with more specific info:\n +++[view details...|click for details]>\n put some detail here, which could include some +++[definitions]>explaining technical terms===\n === \n=== \n===\n+++!!!!![Installation]>\nimport (or copy/paste) the following tiddlers into your document:\n''NestedSlidersPlugin'' (tagged with <<tag systemConfig>>)\n===\n+++!!!!![Revision History]>\n\n++++[2006.01.03 - 1.6.2]\nWhen using optional "!" heading style, instead of creating a clickable "Hn" element, create an "A" element inside the "Hn" element. (allows click-through in SlideShowPlugin, which captures nearly all click events, except for hyperlinks)\n===\n\n+++[2005.12.15 - 1.6.1]\nadded optional "..." syntax to invoke deferred ('lazy') rendering for initially hidden sliders\nremoved checkbox option for 'global' application of lazy sliders\n===\n\n+++[2005.11.25 - 1.6.0]\nadded optional handling for 'lazy sliders' (deferred rendering for initially hidden sliders)\n===\n\n+++[2005.11.21 - 1.5.1]\nrevised regular expressions: if present, a single newline //preceding// and/or //following// a slider definition will be suppressed so start/end syntax can be place on separate lines in the tiddler 'source' for improved readability. Similarly, any whitespace (newlines, tabs, spaces, etc.) trailing the 'start slider' syntax or preceding the 'end slider' syntax is also suppressed.\n===\n\n+++[2005.11.20 - 1.5.0]\n added (cookiename) syntax for optional tracking and restoring of slider open/close state\n===\n\n+++[2005.11.11 - 1.4.0]\n added !!!!! syntax to render slider label as a header (Hn) style instead of a button/link style\n===\n\n+++[2005.11.07 - 1.3.0]\n removed alternative syntax {{{(((}}} and {{{)))}}} (so they can be used by other\n formatting extensions) and simplified/improved regular expressions to trim multiple excess newlines\n===\n\n+++[2005.11.05 - 1.2.1]\n changed name to NestedSlidersPlugin\n more documentation\n===\n\n+++[2005.11.04 - 1.2.0]\n added alternative character-mode syntax {{{(((}}} and {{{)))}}}\n tweaked "eat newlines" logic for line-mode {{{+++}}} and {{{===}}} syntax\n===\n\n+++[2005.11.03 - 1.1.1]\n fixed toggling of default tooltips ("more..." and "less...") when a non-default button label is used\n code cleanup, added documentation\n===\n\n+++[2005.11.03 - 1.1.0]\n changed delimiter syntax from {{{(((}}} and {{{)))}}} to {{{+++}}} and {{{===}}}\n changed name to EasySlidersPlugin\n===\n\n+++[2005.11.03 - 1.0.0]\n initial public release\n===\n\n===\n+++!!!!![Credits]>\nThis feature was implemented by EricShulman from [[ELS Design Studios|http:/www.elsdesign.com]] based on considerable research, programming and suggestions from RodneyGomes, GeoffSlocock, and PaulPetterson\n===\n***/\n// //+++!!!!![Code]\n//{{{\nversion.extensions.nestedSliders = {major: 1, minor: 6, revision: 2, date: new Date(2006,1,3)};\n//}}}\n\n//{{{\n// options for deferred rendering of sliders that are not initially displayed\nif (config.options.chkDebugLazySliderDefer==undefined) config.options.chkDebugLazySliderDefer=false;\nif (config.options.chkDebugLazySliderRender==undefined) config.options.chkDebugLazySliderRender=false;\n//}}}\n\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\ss*",\n handler: function(w)\n {\n var 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 // default to closed, no cookie\n var show="none"; var title=">"; var tooltip="show"; var cookie="";\n\n // extra "+", default to open\n if (lookaheadMatch[1])\n { show="block"; title="<"; tooltip="hide"; }\n\n // cookie, use saved open/closed state\n if (lookaheadMatch[2]) {\n cookie=lookaheadMatch[2].trim().substr(1,lookaheadMatch[2].length-2);\n cookie="chkSlider"+cookie;\n if (config.options[cookie]==undefined)\n { config.options[cookie] = (show=="block") }\n if (config.options[cookie])\n { show="block"; title="<"; tooltip="hide"; }\n else\n { show="none"; title=">"; tooltip="show"; }\n }\n\n // custom label/tooltip\n if (lookaheadMatch[4]) {\n title = lookaheadMatch[4].trim().substr(1,lookaheadMatch[4].length-2);\n if ((pos=title.indexOf("|")) != -1)\n { tooltip = title.substr(pos+1,title.length); title = title.substr(0,pos); }\n else\n { tooltip += " "+title; }\n }\n // use "Hn" header format instead of button/link\n if (lookaheadMatch[3]) {\n var lvl=(lookaheadMatch[3].length>6)?6:lookaheadMatch[3].length;\n var btn = createTiddlyElement(createTiddlyElement(w.output,"h"+lvl,null,null,null),"a",null,null,title);\n btn.onclick=onClickNestedSlider;\n btn.setAttribute("href","javascript:;");\n btn.setAttribute("title",tooltip);\n\n }\n else\n var btn = createTiddlyButton(w.output,title,tooltip,onClickNestedSlider);\n var panel = createTiddlyElement(w.output,"span",null,"sliderPanel",null);\n btn.sliderCookie = cookie;\n btn.sliderPanel = panel;\n panel.style.display = show;\n w.nextMatch = lookaheadMatch.index + lookaheadMatch[0].length;\n if (!lookaheadMatch[6] || show=="block") {\n w.subWikify(lookaheadMatch[5]?createTiddlyElement(panel,"blockquote"):panel,this.terminator);\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[5]?"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)\n 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//{{{\nfunction onClickNestedSlider(e)\n{\n if (!e) var e = window.event;\n var theTarget = resolveTarget(e);\n var theLabel = theTarget.firstChild.data;\n var theSlider = theTarget.sliderPanel\n var isOpen = theSlider.style.display!="none";\n // if using default button labels, toggle labels\n if (theLabel==">") theTarget.firstChild.data = "<";\n else if (theLabel=="<") theTarget.firstChild.data = ">";\n // if using default tooltips, toggle tooltips\n if (theTarget.getAttribute("title")=="show")\n theTarget.setAttribute("title","hide");\n else if (theTarget.getAttribute("title")=="hide")\n theTarget.setAttribute("title","show");\n if (theTarget.getAttribute("title")=="show "+theLabel)\n theTarget.setAttribute("title","hide "+theLabel);\n else if (theTarget.getAttribute("title")=="hide "+theLabel)\n theTarget.setAttribute("title","show "+theLabel);\n // deferred rendering (if needed)\n if (theSlider.getAttribute("rendered")=="false") {\n if (config.options.chkDebugLazySliderRender)\n alert("rendering '"+theLabel+"':\sn\sn"+theSlider.getAttribute("raw"));\n var place=theSlider;\n if (theSlider.getAttribute("blockquote")=="true")\n place=createTiddlyElement(place,"blockquote");\n wikify(theSlider.getAttribute("raw"),place);\n theSlider.setAttribute("rendered","true");\n }\n // show/hide the slider\n// DISABLED: animation sets overflow:hidden, which clips nested sliders...\n// if(config.options.chkAnimate)\n// anim.startAnimating(new Slider(theSlider,!isOpen,e.shiftKey || e.altKey,"none"));\n// else\n theSlider.style.display = isOpen ? "none" : "block";\n if (this.sliderCookie && this.sliderCookie.length)\n { config.options[this.sliderCookie]=!isOpen; saveOptionCookie(this.sliderCookie); }\n return false;\n}\n//}}}\n// //===
Default description for new context (which you can change by editing the [[NewContextTemplate]]). You can edit this description as you like, but be sure to include the {{{gtdActionList}}} macro somewhere to see the active actions.\n\n<<gtdActionList>>
Default description for new project (which you can change by editing the [[NewProjectTemplate]]). Add actions to the project using the {{{gtdAction}}} macro, or the ".." wikitext notation. Note that actions will be tagged with the project name, so it would look nicer if the project name were somewhat concise.
/***\n|''Name:''|NewerTiddlerPlugin|\n|''Version:''|$Revision: 13 $ |\n|''Source:''|http://thePettersons.org/tiddlywiki.html#NewerTiddlerPlugin |\n|''Author:''|[[Paul Petterson]] |\n|''Type:''|Macro Extension |\n|''Requires:''|TiddlyWiki 1.2.33 or higher |\n!Description\nCreate a 'new tiddler' button with lots more options! Specify the text to show on the button, the name of the new tiddler (with date macro expansion), one or more tags for the new tiddlers, and what text if any to include in the new tiddler body! Uses a named parameter format, simalar to the reminder plugin.\n\nAlso - if the tiddler already exists it won't replace any of it's existing data (like tags).\n\n!Syntax\n* {{{<<newerTiddler button:"Inbox" name:"Inbox YYYY/MM/DD" tags:"Journal, inbox" text:"New stuff for today:">>}}}\n* {{{<<newerTiddler button:"@Action" name:"Action: what" tags:"@Action" text:"Add project and describe action">>}}}\n* {{{<<newerTiddler button:"New Project" name:"Project Name?" tags:"My Projects, My Inbox, Journal" template:"MyTemplate">>}}}\n!!Parameters\n* name:"Name of Tiddler"\n* tags:"Tag1, Tag2, Tag3" - tags for new tiddler, comma seperated //don't use square brackets //({{{[[}}})// for tags!//\n* button:"name for button" - the name to display instead of "new tiddler"\n* body:"what to put in the tiddler body"\n* template:"Name of a tiddler containing the text to use as the body of the new tiddler"\n\n''Note:'' if you sepecify both body and template parameters, then template parameter will be used and the body parameter overridden.\n\n!Sample Output\n* <<newerTiddler button:"Inbox" name:"Inbox YYYY/MM/DD" tags:"Journal inbox" text:"New stuff for today:">>\n* <<newerTiddler button:"@Action" name:"Action: what" tags:"@Action" text:"Add project and describe action">>\n* <<newerTiddler button:"New Project" name:"Project Name?" tags:"[[My Projects]] [[My Inbox]] Journal" template:"MyTemplate">>\n\n!Todo\n<<projectTemplate>>\n\n!Known issues\n* Must use double quotes (") around parameter values if they contain a space, can't use single quotes (').\n* can't use standard bracketted style tags, ust type in the tags space and all and put a comma between them. For example tags:"one big tag, another big tag" uses 2 tags ''one big tag'' and ''another big tag''.\n\n!Notes\n* It works fine, and I use it daily, however I haven't really tested edge cases or multiple platforms. If you run into bugs or problems, let me know!\n\n!Requests\n* Have delta-date specifiers on the name: name:"Inbox YYY/MM/DD+1" ( ceruleat@gmail.com )\n* Option to just open the tiddler instead of immediately edit it ( ceruleat@gmail.com )\n* Have date formatters in tags as well as in name (me)\n\n!Revision history\n$History: PaulsNotepad.html $\n * \n * ***************** Version 2 *****************\n * User: paulpet Date: 2/26/06 Time: 7:25p\n * Updated in $/PaulsNotepad3.0.root/PaulsNotepad3.0/PaulsPlugins/systemConfig\n * Port to tw2.0, bug fixes, and simplification!\nv1.0.2 (not released) - fixed small documentation issues.\nv1.0.1 October 13th - fixed a bug occurring only in FF\nv1.0 October 11th - Initial public release\nv0.8 October 10th - Feature complete... \nv0.7 Initial public preview\n\n!Code\n***/\n//{{{\nconfig.macros.newerTiddler = { \nname:"New(er) Tiddler",\ntags:"",\ntext:"Type Tiddler Contents Here.",\nbutton:"new(er) tiddler",\n\nreparse: function( params ) {\n var re = /([^:\s'\s"\ss]+)(?::([^\s'\s":\ss]+)|:[\s'\s"]([^\s'\s"\s\s]*(?:\s\s.[^\s'\s"\s\s]*)*)[\s'\s"])?(?=\ss|$)/g;\n var ret = new Array() ;\n var m ;\n\n while( (m = re.exec( params )) != null )\n ret[ m[1] ] = m[2]?m[2]:m[3]?m[3]:true ;\n\n return ret ;\n},\nhandler: function(place,macroName,params,wikifier,paramString,tiddler) {\n if ( readOnly ) return ;\n\n var input = this.reparse( paramString ) ;\n var tiddlerName = input["name"]?input["name"].trim():config.macros.newerTiddler.name ;\n var tiddlerTags = input["tags"]?input["tags"]:config.macros.newerTiddler.tags ;\n var tiddlerBody = input["text"]?input["text"]:config.macros.newerTiddler.text ;\n var buttonText = input["button"]?input["button"]:config.macros.newerTiddler.button ;\n var template = input["template"]?input["template"]:null;\n\n // if there is a template, use it - otherwise use the tiddlerBody text\n if ( template ) {\n tiddlerBody = store.getTiddlerText( template );\n }\n if ( tiddlerBody == null || tiddlerBody.length == 0 )\n tiddlerBody = config.macros.newerTiddler.text ;\n\n var now = new Date() ;\n tiddlerName = now.formatString( tiddlerName ) ;\n \n createTiddlyButton( place, buttonText, "", function() {\n var exists = store.tiddlerExists( tiddlerName );\n var t = store.createTiddler( tiddlerName );\n if ( ! exists )\n t.assign( tiddlerName, tiddlerBody, config.views.wikified.defaultModifier, now, tiddlerTags.readBracketedList() );\n \n story.displayTiddler(null,tiddlerName,DEFAULT_EDIT_TEMPLATE);\n story.focusTiddler(tiddlerName,"title");\n return false;\n });\n}}\n//}}}\n/***\nThis plugin is released under the [[Creative Commons Attribution 2.5 License|http://creativecommons.org/licenses/by/2.5/]]\n***/
[[Operation Condor|http://en.wikipedia.org/wiki/Operation_Condor]] was a campaign of assassination, counter-terrorism, and intelligence operations implemented by authoritative right-wing governments that - from circa 1950 to 1980s - dominated the Southern Cone in Latin America. The systematic counter-terrorism aimed both to deter the influence of Marxist terrorism in the region and to control active or potential subversive elements against these governments. This organized counter-terrorism caused an unknown number of deaths. There have been prosecutions against the members, to different degrees. However some are still pending, and some have been acquitted.\n\nThe operation was jointly conducted by the intelligence and security services of Argentina, Bolivia, Brazil, Chile, Paraguay, and Uruguay in the mid-1970s. The right-wing military governments of these countries, led by dictators such as Videla, Pinochet and Stroessner agreed to cooperate in sending teams into other countries, including France, Portugal, Spain, Italy, and the United States to locate, observe, and assassinate political opponents.\n\nIn November 1975, leaders of the secret polices of Argentina, Bolivia, Chile, Paraguay, and Uruguay met together, with Manuel Contreras, chief of the [[DINA]], in Santiago de Chile, creating the [[Plan Condor]]. Brazil signed the agreement later (June 1976), and refused to engage in actions out of Latin America.\n\nIn light of the Cold War, Operation Condor was given at least tacit approval by the United States, due to fear of Marxist revolution in the region. The targets were officially leftist guerrillas, but in fact included all kinds of political opponents, including family and others, as reported by the Valech Commission. It appears that [[Henry Kissinger]], Secretary of State in the Nixon administration, was closely involved diplomatically with the Southern Cone governments at the time and well-aware of the Condor plan. On March 6, 2001, the New York Times reported the existence of a recently declassified State Department document revealing that the United States facilitated communications for Operation Condor. This 1978 cable released in 2000 under Chile declassification project showed that the South American intelligence chiefs involved in Condor "keep in touch with one another through a U.S. communications installation in the Panama Canal Zone which covers all of Latin America". [[Robert E. White]], the U.S. ambassador to Paraguay, was concerned that the US connection to Condor might be revealed during the then ongoing investigation into the deaths of [[Orlando Letelier]] and his American colleague [[Ronni Moffitt]].\n\nA "U.S. communications installation in the Panama Canal Zone which covers all of Latin America", "employed to co-ordinate intelligence information among the southern cone countries", was acknowledged by a cable released in 2000 under Chile declassification project. The "information exchange" (via telex) included [[torture]] techniques (i.e. near drowning or playing the sound recordings of victims who were being tortured to their family). The infamous "death flights" were also widely used, in order to make the corpses, and therefore evidence, disappear. There were also many cases of child abduction.\n\nOn December 22, 1992, a significant amount of information about Operation Condor came to light when José Fernandez, a Paraguayan judge, visited a police station in the Lambaré suburb of Asunción to look for files on a former political prisoner. Instead he found what became known as the "terror archives", detailing the fates of thousands of Latin Americans secretly kidnapped, tortured and killed by the security services of Argentina, Bolivia, Brazil, Chile, Paraguay and Uruguay. Some of these countries have since used portions of this archive to prosecute former military officers. The archives counted 50,000 persons murdered, 30,000 "desaparecidos" and 400,000 incarcerated people.\n\nAccording to these archives, other countries such as Colombia, Peru and Venezuela also cooperated to varying extents by providing intelligence information in response to requests from the security services of the Southern Cone countries. Even though they weren't at the secret November 1975 meeting in Santiago de Chile there is evidence of their involvement. For instance, in June 1980, Peru was known to have been collaborating with Argentinian agents of 601 Intelligence Battalion in the kidnapping, torture and disappearance of a group of Montoneros living in exile in Lima. The "terror archives" also revealed Colombia's and Venezuela's greater or lesser degree of cooperation ([[Luis Posada Carriles]] was probably at the meeting that decided Orlando Letelier's car bombing). In Colombia, it has been alleged that a paramilitary organization known as [[Alianza Americana Anticomunista]] may have cooperated with Operation Condor.\n\nIt should be noted that Mexico, together with Costa Rica, Canada, France, the U.K., Spain and Sweden received many leftist intellectuals and common folk fleeing from the terror regimes.\n\nThe Operation Condor officially ended with the ousting of the Argentinean dictatorship in 1983, although the killings continued.\n\n----\n\n1976: George H. W. Bush was running the CIA and right-wing military dictatorships – many with close CIA ties – were striking out at political adversaries through a cross-border assassination project known as Operation Condor.\n\nAt the time, one of the most eloquent voices making the case against Pinochet’s regime was [[Orlando Letelier]], who was living in exile and operating out of a liberal think tank in Washington, the [[Institute for Policy Studies]].\n\nEarlier in their government careers, when Letelier was briefly defense minister in the leftist government of [[Salvador Allende]], Pinochet had been Letelier’s subordinate. In 1973, after Pinochet took power in a military coup that killed Allende, Pinochet imprisoned Letelier at a desolate concentration camp on Dawson Island off Chile’s south Pacific coast. International pressure won Letelier release a year later.\n\nBy 1976, however, Pinochet was chafing under Letelier’s criticism of the regime’s human rights record. Letelier was doubly infuriating to Pinochet because Letelier was regarded as a man of intellect and charm, even impressing [[CIA]] officers who observed him as “a personable, socially pleasant man” and “a reasonable, mature democrat,” according to CIA biographical sketches.\n\nPinochet fumed to U.S. officials, including to Secretary of State Henry Kissinger, that Letelier was spreading lies and causing trouble with the U.S. Congress. Soon, Pinochet was plotting with [[Manuel Contreras]], chief of Chile’s feared DINA secret service, on how to silence Letelier for good.\n\nBy summer 1976, Bush’s CIA was hearing a lot about Operation Condor from South American sources who had attended a second organizational conference of Southern Cone intelligence services.\n\nThese CIA sources reported that the military regimes were preparing “to engage in ‘executive action’ outside the territory of member countries.” In intelligence circles, “executive action” is a euphemism for assassination.\n\nOn July 30, 1976, a CIA official briefed State Department officials about these “disturbing developments in [Condor’s] operational attitudes.” The information was passed to Kissinger in a “secret” report on August 3, 1976.\n\nThe 14-page report from Assistant Secretary of State Harry Shlaudeman said the military regimes were “joining forces to eradicate ‘subversion,’ a word which increasingly translates into non-violent dissent from the left and center left.” [See Peter Kornbluh’s [[The Pinochet File|http://www.gwu.edu/~nsarchiv/NSAEBB/NSAEBB199/index.htm]].]\n\n----\n\nOrlando Letelier, a former minister of the Chilean Allende government who was assassinated by a car bomb explosion in Washington, D.C. on September 21, 1976. His assistant Ronni Moffit, a U.S. citizen, also died in the explosion. [[Michael Townley]], General [[Manuel Contreras]], former head of the DINA; and Brigadier [[Pedro Espinoza]] Bravo also formerly of DINA were convicted for the murders. In 1978, Chile accepted to hand over Michael Townley to the USA, in order to reduce the tension about Orlando Letelier's murder. Michael Townley was then freed under witness protection programs. USA is still waiting for Manuel Contreras and Pedro Espinoza to be extradited.\n\nIn an op-ed published 17 December 2004 in the Los Angeles Times, [[Francisco Letelier]], the son of Orlando Letelier, wrote that the assassination of his father was part of Operation Condor, described as "an intelligence-sharing network used by six South American dictators of that era to eliminate dissidents." Noting that [[Augusto Pinochet]], who had just been placed under house arrest in Chile, has been accused of being a participant in Operation Condor, Francisco Letelier declared: "My father's murder was part of Condor."\n\nMichael Townley has accused Pinochet of being responsible for Orlando Letelier's death. Townley confessed that he had hired five anti-Castro Cuban exiles to booby-trap Letelier's car. According to [[Jean-Guy Allard]], after consultations with the terrorist organization [[CORU]]'s leadership, including [[Luis Posada Carriles]] and [[Orlando Bosch]], those elected to carry out the murder were Cuban-Americans José Dionisio "Bloodbath" Suárez, Virgilio Paz Romero, Alvin Ross Díaz and brothers Guillermo and Ignacio Novo Sampoll. According to the Miami Herald, Luis Posada Carriles was at this meeting that decided on Letelier's death and also about the Cubana Flight 455 bombing.\n\n!US involvement\n*Further information: [[U.S. intervention in Chile|http://en.wikipedia.org/wiki/U.S._intervention_in_Chile]]\n\nCIA documents show that the Bush-led CIA had close contact with members of the Chilean secret police, DINA, and its chief Manuel Contreras. Some have alleged that the CIA's one-time payment to Contreras is proof that the U.S. approved of Operation Condor and military repression within Chile. The CIA's official documents state that at one time, some members of the intelligence community recommended making Contreras into a paid contact because of his closeness to Pinochet; the plan was rejected based on Contreras' poor human rights track record, but the single payment was made due to miscommunication. \n\nOn March 6, 2001, the New York Times reported the existence of a recently declassified State Department document revealing that the United States facilitated communications for Operation Condor. The document, a 1978 cable from [[Robert E. White]], the U.S. ambassador to Paraguay, was discovered by Professor J. Patrice McSherry of Long Island University, who had published several articles on Operation Condor. She called the cable "another piece of increasingly weighty evidence suggesting that U.S. military and intelligence officials supported and collaborated with Condor as a secret partner or sponsor."\n\nIn the cable, Ambassador White relates a conversation with General Alejandro Fretes Davalos, chief of staff of Paraguay's armed forces, who told him that the South American intelligence chiefs involved in Condor "keep in touch with one another through a U.S. communications installation in the Panama Canal Zone which covers all of Latin America". This installation is "employed to co-ordinate intelligence information among the southern cone countries". White, whose message was sent to Secretary of State [[Cyrus Vance]], was concerned that the US connection to Condor might be revealed during the then ongoing investigation into the deaths of Orlando Letelier and his American colleague Ronni Moffitt. "It would seem advisable," he suggests, "to review this arrangement to insure that its continuation is in US interest."\n\nThe document was found among 16,000 State, CIA, White House, Defense and Justice Department records released in November 2000 on the Pinochet dictatorship in Chile, and Washington's role in the violent coup that brought his military regime to power. The release was the fourth and final batch of records released under the Clinton Administration's special [[Chile Declassification Project]].\n\n''Other operations and strategies related to Condor''\n\n*[[Operation Colombo]], for which Augusto Pinochet is currently judged\n*[[Operation Gladio]], NATO secret "stay-behind" paramilitary network\n*[[Caravan of Death]], carried on a few weeks after the 1973 coup\n*"estrategia della tensione", a violent strategy used by "stay-behind" armies in Italy during the 1970s, with the aim of pushing the state to declare a state of exception.
Designed as case-management software for federal prosecutors, PROMIS has the ability to combine disparate databases, and to track people by their involvement with the legal system. [[Bill Hamilton]] and others now claim that the [[DOJ]] has modified PROMIS to monitor intelligence operations, agents and targets, instead of legal cases.\n\nWhat this means is that PROMIS can provide a complete rundown of all federal cases in which a lawyer has been involved, or all the cases in which a lawyer has represented defendant A, or all the cases in which a lawyer has represented white-collar criminals, at which stage in each of the cases the lawyer agreed to a plea bargain, and so on. Based on this information, PROMIS can help a prosecutor determine when a plea will be taken in a particular type of case.\n\nBut the real power of PROMIS, according to Hamilton, is that with a staggering 570,000 lines of computer code, PROMIS can integrate innumerable databases without requiring any reprogramming. In essence, PROMIS can turn blind data into information. And anyone in government will tell you that information, when wielded with finesse, begets power. Converted to use by intelligence agencies, as has been alleged in interviews by ex-[[CIA]] and Israeli [[Mossad]] agents, PROMIS can be a powerful tracking device capable of monitoring intelligence operations, agents and targets, instead of legal cases.\n\nAt the time of its inception, PROMIS was the most powerful program of its type. But a similar program, [[DALITE]], was developed under another [[LEAA]] grant by [[D. Lowell Jensen]], the Alameda County (Calif.) District Attorney. In the mid-1970s, the two programs vied for a lucrative Los Angeles County contract and [[Inslaw|inslaw]] won out. (Early in his career, [[Edwin Meese]] worked under Jensen at the Alameda County District Attorney's office. Jensen was later appointed to Meese's Justice Department during the [[Ronald Reagan]] presidency.)\n\nIn the final days of the [[Jimmy Carter]] administration, the LEAA was phased out. Inslaw had made a name for itself and Hamilton wanted to stay in business, so he converted [[Inslaw]] to a for-profit, private business. The new Inslaw did not own the public domain version of PROMIS because it had been developed with LEAA funds. But because it had funded a major upgrade with its own money, Inslaw did claim ownership of the enhanced PROMIS.\n\nThrough his lawyers, Hamilton sent the Department of Justice a letter outlining his company's decision to go private with the enhanced PROMIS. The letter specifically asked the [[DOJ]] to waive any proprietary rights it might claim to the enhanced version. In a reply dated August 11, 1982, a DOJ lawyer wrote: "To the extent that any other enhancements (beyond the public domain PROMIS) were privately funded by Inslaw and not specified to be delivered to the Department of Justice under any contract or other agreement, Inslaw may assert whatever proprietary rights it may have."\n\n[[Arnold Burns]], then a deputy attorney general, clarified the DOJ's position in a now-critical 1988 deposition: "Our lawyers were satisfied that Inslaw's lawyers could sustain the claim in court, that we had waived those [proprietary] rights."\n\nThe enhancements Inslaw claimed were significant. In the 1970s the public-domain PROMIS was adapted to run on Burroughs, Prime, Wang and IBM machines, all of which used less-powerful 16-bit architectures. With private funds, Inslaw converted that version of PROMIS to a 32-bit architecture running on a DEC VAX minicomputer. It was this version that [[Rafael Etian]] saw in 1983. It was this version that the DOJ stole later that year through a pre-meditated plan, according to two court decisions.\n\nAlthough Inslaw was contracted to provide only the public domain PROMIS, the DOJ demanded that Inslaw turn over the enhanced version of PROMIS in case the company could not complete its contractual obligations. Inslaw agreed to this contract modification, but on two conditions: that the DOJ recognize Inslaw's proprietary rights to enhanced PROMIS, and that the DOJ not distribute enhanced PROMIS beyond the boundaries of the contract (the 94 US Attorney's offices.)\n\nThe DOJ agreed to these conditions, but requested Inslaw prove it had indeed created enhanced PROMIS with private funds. Inslaw said it would, and the enhanced software was given to the DOJ.\n\nOnce the DOJ had control of PROMIS, it dogmatically refused to verify that Inslaw had created the enhancements, essentially rendering the contract modification useless. When Inslaw protested, the DOJ began to withhold payments. Two years later, Inslaw was forced into bankruptcy.
Ptech Inc. was a Quincy, Massachusetts-based provider of enterprise architecture, business modeling, analysis and integration software solutions. This privately-held corporation was founded in 1994, and known for its technology, which was based on a unique implementation of neural net and semantic technologies. Ptech was recognized as one New England Technology's "Fast 50" by Deloitte & Touche (now Deloitte Touche Tohmatsu) in 2001.\n\nThe company was once part of [[UML Partners]], the consortium that was convened to develop standards for UML, the [[Unified Modeling Language]].\n\n''Ptech and Terrorism''\n\nAfter the attacks of 9/11, it was discovered by Christopher Bollyn [1] that Ptech was owned and operated by known and suspected terrorists. Shortly after the attacks, the company's primary investor, [[Yassin Al-Qadi]], was named by the US government as a specially designated global terrorist. Since then, several other Ptech investors and managers have been exposed as terrorist-financers, as is summarized in "Port deal is Nothing Compared to Ptech,":\n\n "Former Ptech board member [[Soliman Biheiri]], who was recently convicted of lying to investigators regarding his affiliations with known terrorists, was in charge of [[BMI]] — a defunct New Jersey-based Islamic investment firm with connections to other members on Ptech's management and investors, which according to court documents was used as a financial conduit for [[al-Qaeda]] and [[Hamas]] supporters. The FBI discovered the true principals behind BMI were actually [[Yassin al-Qadi]] and Hamas leader [[Musa abu Marzook]].\n\n Investigators also accuse Ptech's Biheiri of using BMI to funnel $3.7 million from an Islamic charity, entitled the [[SAAR Foundation]], to Islamist terrorists. The President and CEO of the SAAR Foundation was [[Yakub Mirza]], who was also on Ptech's board of directors, and who is said to have contacts high within the FBI.\n\n Furthermore, Ptech's Vice President and Chief Scientist, [[Hussein Ibrahim]], was the founder and President of the aforementioned BMI. In fact, Ptech, al-Qadi, Biheiri, Ibrahim, BMI, Mirza, and SAAR, all maintained financial connections with one another, as well as with other organizations and fronts connected to money laundering and terrorist financing, such as the [[Muslim Brotherhood]], [[al-Taqwa]], the [[Safa Foundation]], the International Islamic Relief Organization ([[IIRO]]), and others. ...\n\n Ptech's chief architect, [[Suheil Laher]], headed yet another Islamic charity entitled [[Care International]], which the FBI and IRS claim was "engaged in the solicitation and expenditure of funds to support the mujahideen and promote jihad."\n\n Top Ptech investor and manager, [[Muhamed Mubayyid]], served as Care's treasurer, and has since been indicted for lying on tax returns and concealing the charity's true activities. Mubayyid also donated money to the [[Alkhifah]] Refugees Center, which maintained the same corporate office as Care, and from where the 1993 World Trade Center bombing was launched.\n\n Also part of this financial nexus was Ptech founder [[Abdurahman Alamoudi]], who, according to the US Treasury Department, "had a close relationship with al Qaida and had raised money for [[al-Qaeda]] in the United States." He has since been sentenced to a maximum of 23-years in prison for illegal dealings with Libya, including his admitted involvement in a plot to assassinate Saudi Crown Prince Abdullah."\n\nPtech has since changed its name to [[GoAgile]], and now markets software through an unknown third party.\n\n''Notable clientele''\n\nPtech's roster of clients included several governmental agencies, including the United States Armed Forces, NATO, Congress, the Department of Energy, the Department of Justice, the Federal Bureau of Investigation, Customs, the FAA, the IRS, the Secret Service, and the White House. Despite the company's connections to terrorism, as of May 2004 they were still contracted by several federal agencies, including the White House.\n\nPtech has had a security clearance to work on sensitive military projects since 1997.
<div class='header' macro='gradient vert #CCDDCC #F7FFF7'>\n<div class='headerShadow'>\n<span class='siteTitle' refresh='content' tiddler='SiteTitle'></span>&nbsp;\n<span class='siteSubtitle' refresh='content' tiddler='SiteSubtitle'></span>\n</div>\n<div class='headerForeground'>\n<span class='siteTitle' refresh='content' tiddler='SiteTitle'></span>&nbsp;\n<span class='siteSubtitle' refresh='content' tiddler='SiteSubtitle'></span>\n</div>\n</div>\n<div id='mainMenu' refresh='content' tiddler='MainMenu' force='true'></div>\n<div id='sidebar'>\n<div id='sidebarOptions' refresh='content' tiddler='SideBarOptions'></div>\n<div id='sidebarTabs' refresh='content' force='true' tiddler='SideBarTabs'></div>\n</div>\n<div id='displayArea'>\n<div id='messageArea'></div>\n<div id='tiddlerDisplay'></div>\n</div>
<<gtdActionList *>>
Rafael ('Rafi') Eitan (born November 23, 1926) is the leader of Gil - Gimla'ey Yisrael LaKneset (pensioners of Israel to the Knesset) party which has won an unexpected large number of seats in the Israeli legislative election of 2006. \n\nIn 1960, he was in-charge of the Mossad operation that lead to the capture of [[Adolf Eichmann]]. He served as an advisor on terrorism to Prime Minister Menachem Begin, and in 1981 he was appointed to head the Bureau of Scientific Relations, then an intelligence entity on par with [[Mossad]], [[Aman]] and [[Shabak]]. Eitan assumed responsibility for and resigned over the [[Jonathan Pollard]] affair, and the Bureau was disbanded.\n\nFrom 1985 until 1993, he was head of the government's Chemicals company, which was expanded under his leadership. After 1993, he became a businessman, noted for several large scale agricultural and construction ventures in Cuba. In 2006, he accepted the offer to head the list for Gil.\n\nAccording to the book //Gideon's Spies// by Gordon Thomas, during the mid 1980's the Thatcher government in Britain developed a relationship with Eitan as an advisor to MI6 on counterterrorism operations in Northern Ireland. This relationship came to a head in 1985, when Mossad agents helped track an IRA bomb team in Gibralter. The three member IRA team was killed by the British SAS, under highly contoversial circumstances. It was subsequently reported in British papers that Rafi Eitan and Mossad had played a surveilance role in the operation, and IRA command put out orders for assassination teams in Ireland and Britain to find and kill Rafi Eitan. Due to this threat of Assassination, and the embarrassment of the Israeli government over Eitan's unauthorized relationship with the operation, Eitan left Britain and ended his relationship with Britain's intelligence services. This incident strained Israeli/British relations for several years.
<<list tagged txtGTDReferenceContext any>>
/***\n|''Name:''|ReminderPlugin|\n|''Version:''|2.3.8.1 (Mar 24, 2006)|\n|''Source:''|http://www.geocities.com/allredfaq/reminderMacros.html|\n|''Author:''|Jeremy Sheeley(pop1280 [at] excite [dot] com)|\n|''Licence:''|[[BSD open source license]]|\n|''Macros:''|reminder, showreminders, displayTiddlersWithReminders, newReminder|\n|''TiddlyWiki:''|2.0+|\n|''Browser:''|Firefox 1.0.4+; InternetExplorer 6.0|\n\n!Description\nThis plugin provides macros for tagging a date with a reminder. Use the {{{reminder}}} macro to do this. The {{{showReminders}}} and {{{displayTiddlersWithReminder}}} macros automatically search through all available tiddlers looking for upcoming reminders.\n\n''This version contains a fix by Tom Otvos that modifies tag filtering when tiddlers contain no tags. In this version, if you are filtering showReminders by tag, and a tiddler has no tags, the filter will //not// match the tiddler. Do not copy this into your own TW documents unless you accept this change.''\n\n!Installation\n* Create a new tiddler in your tiddlywiki titled ReminderPlugin and give it the {{{systemConfig}}} tag. The tag is important because it tells TW that this is executable code.\n* Double click this tiddler, and copy all the text from the tiddler's body.\n* Paste the text into the body of the new tiddler in your TW.\n* Save and reload your TW.\n* You can copy some examples into your TW as well. See [[Simple examples]], [[Holidays]], [[showReminders]] and [[Personal Reminders]]\n\n!Syntax:\n|>|See [[ReminderSyntax]] and [[showRemindersSyntax]]|\n\n!Revision history\n* v2.3.8 (Mar 9, 2006)\n**Bug fix: A global variable had snuck in, which was killing FF 1.5.0.1\n**Feature: You can now use TIDDLER and TIDDLERNAME in a regular reminder format\n* v2.3.6 (Mar 1, 2006)\n**Bug fix: Reminders for today weren't being matched sometimes.\n**Feature: Solidified integration with DatePlugin and CalendarPlugin\n**Feature: Recurring reminders will now return multiple hits in showReminders and the calendar.\n**Feature: Added TIDDLERNAME to the replacements for showReminders format, for plugins that need the title without brackets.\n* v2.3.5 (Feb 8, 2006)\n**Bug fix: Sped up reminders lots. Added a caching mechanism for reminders that have already been matched.\n* v2.3.4 (Feb 7, 2006)\n**Bug fix: Cleaned up code to hopefully prevent the Firefox 1.5.0.1 crash that was causing lots of plugins \nto crash Firefox. Thanks to http://www.jslint.com\n* v2.3.3 (Feb 2, 2006)\n**Feature: newReminder now has drop down lists instead of text boxes.\n**Bug fix: A trailing space in a title would trigger an infinite loop.\n**Bug fix: using tag:"birthday !reminder" would filter differently than tag:"!reminder birthday"\n* v2.3.2 (Jan 21, 2006)\n**Feature: newReminder macro, which will let you easily add a reminder to a tiddler. Thanks to Eric Shulman (http://www.elsdesign.com) for the code to do this.\n** Bug fix: offsetday was not working sometimes\n** Bug fix: when upgrading to 2.0, I included a bit to exclude tiddlers tagged with excludeSearch. I've reverted back to searching through all tiddlers\n* v2.3.1 (Jan 7, 2006)\n**Feature: 2.0 compatibility\n**Feature AlanH sent some code to make sure that showReminders prints a message if no reminders are found.\n* v2.3.0 (Jan 3, 2006)\n** Bug Fix: Using "Last Sunday (-0)" as a offsetdayofweek wasn't working.\n** Bug Fix: Daylight Savings time broke offset based reminders (for example year:2005 month:8 day:23 recurdays:7 would match Monday instead of Tuesday during DST.\n\n!Code\n***/\n//{{{\n\n//============================================================================\n//============================================================================\n// ReminderPlugin\n//============================================================================\n//============================================================================\n\nversion.extensions.ReminderPlugin = {major: 2, minor: 3, revision: 8, date: new Date(2006,3,9), source: "http://www.geocities.com/allredfaq/reminderMacros.html"};\n\n//============================================================================\n// Configuration\n// Modify this section to change the defaults for \n// leadtime and display strings\n//============================================================================\n\nconfig.macros.reminders = {};\nconfig.macros["reminder"] = {};\nconfig.macros["newReminder"] = {};\nconfig.macros["showReminders"] = {};\nconfig.macros["displayTiddlersWithReminders"] = {};\n\nconfig.macros.reminders["defaultLeadTime"] = [0,6000];\nconfig.macros.reminders["defaultReminderMessage"] = "DIFF: TITLE on DATE ANNIVERSARY";\nconfig.macros.reminders["defaultShowReminderMessage"] = "DIFF: TITLE on DATE ANNIVERSARY -- TIDDLER";\nconfig.macros.reminders["defaultAnniversaryMessage"] = "(DIFF)";\nconfig.macros.reminders["untitledReminder"] = "Untitled Reminder";\nconfig.macros.reminders["noReminderFound"] = "Couldn't find a match for TITLE in the next LEADTIMEUPPER days."\nconfig.macros.reminders["todayString"] = "Today";\nconfig.macros.reminders["tomorrowString"] = "Tomorrow";\nconfig.macros.reminders["ndaysString"] = "DIFF days";\nconfig.macros.reminders["emtpyShowRemindersString"] = "There are no upcoming events";\n\n\n//============================================================================\n// Code\n// You should not need to edit anything \n// below this. Make sure to edit this tiddler and copy \n// the code from the text box, to make sure that \n// tiddler rendering doesn't interfere with the copy \n// and paste.\n//============================================================================\n\n// This line is to preserve 1.2 compatibility\n if (!story) var story=window; \n//this object will hold the cache of reminders, so that we don't\n//recompute the same reminder over again.\nvar reminderCache = {};\n\nconfig.macros.showReminders.handler = function showReminders(place,macroName,params)\n{\n var now = new Date().getMidnight();\n var paramHash = {};\n var leadtime = [0,14];\n paramHash = getParamsForReminder(params);\n var bProvidedDate = (paramHash["year"] != null) || \n (paramHash["month"] != null) || \n (paramHash["day"] != null) || \n (paramHash["dayofweek"] != null);\n if (paramHash["leadtime"] != null)\n {\n leadtime = paramHash["leadtime"];\n if (bProvidedDate)\n {\n //If they've entered a day, we need to make \n //sure to find it. We'll reset the \n //leadtime a few lines down.\n paramHash["leadtime"] = [-10000, 10000];\n }\n }\n var matchedDate = now;\n if (bProvidedDate)\n {\n var leadTimeLowerBound = new Date().getMidnight().addDays(paramHash["leadtime"][0]);\n var leadTimeUpperBound = new Date().getMidnight().addDays(paramHash["leadtime"][1]);\n matchedDate = findDateForReminder(paramHash, new Date().getMidnight(), leadTimeLowerBound, leadTimeUpperBound); \n }\n\n var arr = findTiddlersWithReminders(matchedDate, leadtime, paramHash["tag"], paramHash["limit"]);\n var elem = createTiddlyElement(place,"span",null,null, null);\n var mess = "";\n if (arr.length == 0)\n {\n mess += config.macros.reminders.emtpyShowRemindersString; \n }\n for (var j = 0; j < arr.length; j++)\n {\n if (paramHash["format"] != null)\n {\n arr[j]["params"]["format"] = paramHash["format"];\n }\n else\n {\n arr[j]["params"]["format"] = config.macros.reminders["defaultShowReminderMessage"];\n }\n mess += getReminderMessageForDisplay(arr[j]["diff"], arr[j]["params"], arr[j]["matchedDate"], arr[j]["tiddler"]);\n mess += "\sn";\n }\n wikify(mess, elem, null, null);\n};\n\n\nconfig.macros.displayTiddlersWithReminders.handler = function displayTiddlersWithReminders(place,macroName,params)\n{\n var now = new Date().getMidnight();\n var paramHash = {};\n var leadtime = [0,14];\n paramHash = getParamsForReminder(params);\n var bProvidedDate = (paramHash["year"] != null) || \n (paramHash["month"] != null) || \n (paramHash["day"] != null) || \n (paramHash["dayofweek"] != null);\n if (paramHash["leadtime"] != null)\n {\n leadtime = paramHash["leadtime"];\n if (bProvidedDate)\n {\n //If they've entered a day, we need to make \n //sure to find it. We'll reset the leadtime \n //a few lines down.\n paramHash["leadtime"] = [-10000,10000];\n }\n }\n var matchedDate = now;\n if (bProvidedDate)\n {\n var leadTimeLowerBound = new Date().getMidnight().addDays(paramHash["leadtime"][0]);\n var leadTimeUpperBound = new Date().getMidnight().addDays(paramHash["leadtime"][1]);\n matchedDate = findDateForReminder(paramHash, new Date().getMidnight(), leadTimeLowerBound, leadTimeUpperBound); \n }\n var arr = findTiddlersWithReminders(matchedDate, leadtime, paramHash["tag"], paramHash["limit"]);\n for (var j = 0; j < arr.length; j++)\n {\n displayTiddler(null, arr[j]["tiddler"], 0, null, false, false, false);\n }\n};\n\nconfig.macros.reminder.handler = function reminder(place,macroName,params)\n{\n var dateHash = getParamsForReminder(params);\n if (dateHash["hidden"] != null)\n {\n return;\n }\n var leadTime = dateHash["leadtime"];\n if (leadTime == null)\n {\n leadTime = config.macros.reminders["defaultLeadTime"]; \n }\n var leadTimeLowerBound = new Date().getMidnight().addDays(leadTime[0]);\n var leadTimeUpperBound = new Date().getMidnight().addDays(leadTime[1]);\n var matchedDate = findDateForReminder(dateHash, new Date().getMidnight(), leadTimeLowerBound, leadTimeUpperBound);\n if (!window.story) \n {\n window.story=window; \n }\n if (!store.getTiddler) \n {\n store.getTiddler=function(title) {return this.tiddlers[title];};\n }\n var title = window.story.findContainingTiddler(place).id.substr(7);\n if (matchedDate != null)\n {\n var diff = matchedDate.getDifferenceInDays(new Date().getMidnight());\n var elem = createTiddlyElement(place,"span",null,null, null);\n var mess = getReminderMessageForDisplay(diff, dateHash, matchedDate, title);\n wikify(mess, elem, null, null);\n }\n else\n {\n createTiddlyElement(place,"span",null,null, config.macros.reminders["noReminderFound"].replace("TITLE", dateHash["title"]).replace("LEADTIMEUPPER", leadTime[1]).replace("LEADTIMELOWER", leadTime[0]).replace("TIDDLERNAME", title).replace("TIDDLER", "[[" + title + "]]") );\n }\n};\n\nconfig.macros.newReminder.handler = function newReminder(place,macroName,params)\n{\n var today=new Date().getMidnight();\n var formstring = '<html><form>Year: <select name="year"><option value="">Every year</option>';\n for (var i = 0; i < 5; i++)\n {\n formstring += '<option' + ((i == 0) ? ' selected' : '') + ' value="' + (today.getFullYear() +i) + '">' + (today.getFullYear() + i) + '</option>';\n }\n formstring += '</select>&nbsp;&nbsp;Month:<select name="month"><option value="">Every month</option>';\n for (i = 0; i < 12; i++)\n {\n formstring += '<option' + ((i == today.getMonth()) ? ' selected' : '') + ' value="' + (i+1) + '">' + config.messages.dates.months[i] + '</option>';\n }\n formstring += '</select>&nbsp;&nbsp;Day:<select name="day"><option value="">Every day</option>';\n for (i = 1; i < 32; i++)\n {\n formstring += '<option' + ((i == (today.getDate() )) ? ' selected' : '') + ' value="' + i + '">' + i + '</option>';\n }\n\nformstring += '</select>&nbsp;&nbsp;Reminder Title:<input type="text" size="40" name="title" value="please enter a title" onfocus="this.select();"><input type="button" value="ok" onclick="addReminderToTiddler(this.form)"></form></html>';\n\n var panel = config.macros.slider.createSlider(place,null,"New Reminder","Open a form to add a new reminder to this tiddler");\n wikify(formstring ,panel,null,store.getTiddler(params[1]));\n};\n\n// onclick: process input and insert reminder at 'marker'\nwindow.addReminderToTiddler = function(form) {\n if (!window.story) \n {\n window.story=window; \n }\n if (!store.getTiddler) \n {\n store.getTiddler=function(title) {return this.tiddlers[title];};\n }\n var title = window.story.findContainingTiddler(form).id.substr(7);\n var tiddler=store.getTiddler(title);\n var txt='\sn<<reminder ';\n if (form.year.value != "")\n txt += 'year:'+form.year.value + ' ';\n if (form.month.value != "")\n txt += 'month:'+form.month.value + ' ';\n if (form.day.value != "")\n txt += 'day:'+form.day.value + ' ';\n txt += 'title:"'+form.title.value+'" ';\n txt +='>>';\n tiddler.set(null,tiddler.text + txt);\n window.story.refreshTiddler(title,1,true);\n store.setDirty(true);\n};\n\nfunction hasTag(tiddlerTags, tagFilters)\n{\n //Make sure we respond well to empty tagFilterlists\n if (tagFilters.length==0) return true;\n \n var bHasTag = false;\n \n /*bNoPos says: "'till now there has been no check using a positive filter"\n Imagine a filterlist consisting of 1 negative filter:\n If the filter isn't matched, we want hasTag to be true.\n Yet bHasTag is still false ('cause only positive filters cause bHasTag to change)\n \n If no positive filters are present bNoPos is true, and no negative filters are matched so we have not returned false\n Thus: hasTag returns true.\n \n If at any time a positive filter is encountered, we want at least one of the tags to match it, so we turn bNoPos to false, which\n means bHasTag must be true for hasTag to return true*/\n var bNoPos=true;\n \n for (var t3 = 0; t3 < tagFilters.length; t3++)\n {\n var negTest = tagFilters[t3].length > 1 && tagFilters[t3].charAt(0) == '!';\n // do the positive filter test outside of the tag loop, in case there are no tags!\n if (bNoPos && !negTest) bNoPos = false;\n \n for(var t2=0; t2<tiddlerTags.length; t2++)\n {\n if (negTest) \n {\n if (tiddlerTags[t2] == tagFilters[t3].substring(1))\n {\n //If at any time a negative filter is matched, we return false\n return false;\n }\n }\n else \n {\n if (tiddlerTags[t2] == tagFilters[t3])\n {\n //A positive filter is matched. As long as no negative filter is matched, hasTag will return true\n bHasTag=true;\n }\n }\n }\n }\n return (bNoPos || bHasTag);\n};\n\n//This function searches all tiddlers for the reminder //macro. It is intended that other plugins (like //calendar) will use this function to query for \n//upcoming reminders.\n//The arguments to this function filter out reminders //based on when they will fire.\n//\n//ARGUMENTS:\n//baseDate is the date that is used as "now". \n//leadtime is a two element int array, with leadtime[0] \n// as the lower bound and leadtime[1] as the\n// upper bound. A reasonable default is [0,14]\n//tags is a space-separated list of tags to use to filter \n// tiddlers. If a tag name begins with an !, then \n// only tiddlers which do not have that tag will \n// be considered. For example "examples holidays" \n// will search for reminders in any tiddlers that \n// are tagged with examples or holidays and \n// "!examples !holidays" will search for reminders \n// in any tiddlers that are not tagged with \n// examples or holidays. Pass in null to search \n// all tiddlers.\n//limit. If limit is null, individual reminders can \n// override the leadtime specified earlier. \n// Pass in 1 in order to override that behavior.\n\nwindow.findTiddlersWithReminders = function findTiddlersWithReminders(baseDate, leadtime, tags, limit)\n{\n//function(searchRegExp,sortField,excludeTag)\n// var macroPattern = "<<([^>\s\s]+)(?:\s\s*)([^>]*)>>";\n var macroPattern = "<<(reminder)(.*)>>";\n var macroRegExp = new RegExp(macroPattern,"mg");\n var matches = store.search(macroRegExp,"title","");\n var arr = [];\n var tagsArray = null;\n if (tags != null)\n {\n tagsArray = tags.split(" ");\n }\n for(var t=matches.length-1; t>=0; t--)\n {\n if (tagsArray != null)\n {\n //If they specified tags to filter on, and this tiddler doesn't \n //match, skip it entirely.\n if ( ! hasTag(matches[t].tags, tagsArray))\n {\n continue;\n }\n }\n\n var targetText = matches[t].text;\n do {\n // Get the next formatting match\n var formatMatch = macroRegExp.exec(targetText);\n if(formatMatch && formatMatch[1] != null && formatMatch[1].toLowerCase() == "reminder")\n {\n //Find the matching date.\n \n var params = formatMatch[2] != null ? formatMatch[2].readMacroParams() : {};\n var dateHash = getParamsForReminder(params);\n if (limit != null || dateHash["leadtime"] == null)\n {\n if (leadtime == null)\n dateHash["leadtime"] = leadtime;\n else\n {\n dateHash["leadtime"] = [];\n dateHash["leadtime"][0] = leadtime[0];\n dateHash["leadtime"][1] = leadtime[1];\n }\n }\n if (dateHash["leadtime"] == null)\n dateHash["leadtime"] = config.macros.reminders["defaultLeadTime"]; \n var leadTimeLowerBound = baseDate.addDays(dateHash["leadtime"][0]);\n var leadTimeUpperBound = baseDate.addDays(dateHash["leadtime"][1]);\n var matchedDate = findDateForReminder(dateHash, baseDate, leadTimeLowerBound, leadTimeUpperBound);\n while (matchedDate != null)\n {\n var hash = {};\n hash["diff"] = matchedDate.getDifferenceInDays(baseDate);\n hash["matchedDate"] = new Date(matchedDate.getFullYear(), matchedDate.getMonth(), matchedDate.getDate(), 0, 0);\n hash["params"] = cloneParams(dateHash);\n hash["tiddler"] = matches[t].title;\n hash["tags"] = matches[t].tags;\n arr.pushUnique(hash);\n if (dateHash["recurdays"] != null || (dateHash["year"] == null))\n {\n leadTimeLowerBound = leadTimeLowerBound.addDays(matchedDate.getDifferenceInDays(leadTimeLowerBound)+ 1);\n matchedDate = findDateForReminder(dateHash, baseDate, leadTimeLowerBound, leadTimeUpperBound);\n }\n else matchedDate = null;\n }\n }\n }while(formatMatch);\n }\n if(arr.length > 1) //Sort the array by number of days remaining.\n {\n arr.sort(function (a,b) {if(a["diff"] == b["diff"]) {return(0);} else {return (a["diff"] < b["diff"]) ? -1 : +1; } });\n }\n return arr;\n};\n\n//This function takes the reminder macro parameters and\n//generates the string that is used for display.\n//This function is not intended to be called by \n//other plugins.\n window.getReminderMessageForDisplay= function getReminderMessageForDisplay(diff, params, matchedDate, tiddlerTitle)\n{\n var anniversaryString = "";\n var reminderTitle = params["title"];\n if (reminderTitle == null)\n {\n reminderTitle = config.macros.reminders["untitledReminder"];\n }\n if (params["firstyear"] != null)\n {\n anniversaryString = config.macros.reminders["defaultAnniversaryMessage"].replace("DIFF", (matchedDate.getFullYear() - params["firstyear"]));\n }\n var mess = "";\n var diffString = "";\n if (diff == 0)\n {\n diffString = config.macros.reminders["todayString"];\n }\n else if (diff == 1)\n {\n diffString = config.macros.reminders["tomorrowString"];\n }\n else\n {\n diffString = config.macros.reminders["ndaysString"].replace("DIFF", diff);\n }\n var format = config.macros.reminders["defaultReminderMessage"];\n if (params["format"] != null)\n {\n format = params["format"];\n }\n mess = format;\n//HACK! -- Avoid replacing DD in TIDDLER with the date\n mess = mess.replace(/TIDDLER/g, "TIDELER");\n mess = matchedDate.formatStringDateOnly(mess);\n mess = mess.replace(/TIDELER/g, "TIDDLER");\n if (tiddlerTitle != null)\n {\n mess = mess.replace(/TIDDLERNAME/g, tiddlerTitle);\n mess = mess.replace(/TIDDLER/g, "[[" + tiddlerTitle + "]]");\n }\n \n mess = mess.replace("DIFF", diffString).replace("TITLE", reminderTitle).replace("DATE", matchedDate.formatString("DDD MMM DD, YYYY")).replace("ANNIVERSARY", anniversaryString);\n return mess;\n};\n\n// Parse out the macro parameters into a hashtable. This\n// handles the arguments for reminder, showReminders and \n// displayTiddlersWithReminders.\nwindow.getParamsForReminder = function getParamsForReminder(params)\n{\n var dateHash = {};\n var type = "";\n var num = 0;\n var title = "";\n for(var t=0; t<params.length; t++)\n {\n var split = params[t].split(":");\n type = split[0].toLowerCase();\n var value = split[1];\n for (var i=2; i < split.length; i++)\n {\n value += ":" + split[i];\n }\n if (type == "nolinks" || type == "limit" || type == "hidden")\n {\n num = 1;\n }\n else if (type == "leadtime")\n {\n var leads = value.split("...");\n if (leads.length == 1)\n {\n leads[1]= leads[0];\n leads[0] = 0;\n }\n leads[0] = parseInt(leads[0], 10);\n leads[1] = parseInt(leads[1], 10);\n num = leads;\n }\n else if (type == "offsetdayofweek")\n {\n if (value.substr(0,1) == "-")\n {\n dateHash["negativeOffsetDayOfWeek"] = 1;\n value = value.substr(1);\n }\n num = parseInt(value, 10);\n }\n else if (type != "title" && type != "tag" && type != "format")\n {\n num = parseInt(value, 10);\n }\n else\n {\n title = value;\n t++;\n while (title.substr(0,1) == '"' && title.substr(title.length - 1,1) != '"' && params[t] != undefined)\n {\n title += " " + params[t++];\n }\n //Trim off the leading and trailing quotes\n if (title.substr(0,1) == "\s"" && title.substr(title.length - 1,1)== "\s"")\n {\n title = title.substr(1, title.length - 2);\n t--;\n }\n num = title;\n }\n dateHash[type] = num;\n }\n //date is synonymous with day\n if (dateHash["day"] == null)\n {\n dateHash["day"] = dateHash["date"];\n }\n return dateHash;\n};\n\n//This function finds the date specified in the reminder \n//parameters. It will return null if no match can be\n//found. This function is not intended to be used by\n//other plugins.\nwindow.findDateForReminder= function findDateForReminder( dateHash, baseDate, leadTimeLowerBound, leadTimeUpperBound)\n{\n if (baseDate == null)\n {\n baseDate = new Date().getMidnight();\n }\n var hashKey = baseDate.convertToYYYYMMDDHHMM();\n for (var k in dateHash)\n {\n hashKey += "," + k + "|" + dateHash[k];\n }\n hashKey += "," + leadTimeLowerBound.convertToYYYYMMDDHHMM();\n hashKey += "," + leadTimeUpperBound.convertToYYYYMMDDHHMM();\n if (reminderCache[hashKey] == null)\n {\n //If we don't find a match in this run, then we will\n //cache that the reminder can't be matched.\n reminderCache[hashKey] = false;\n }\n else if (reminderCache[hashKey] == false)\n {\n //We've already tried this date and failed\n return null;\n }\n else\n {\n return reminderCache[hashKey];\n }\n \n var bOffsetSpecified = dateHash["offsetyear"] != null || \n dateHash["offsetmonth"] != null || \n dateHash["offsetday"] != null || \n dateHash["offsetdayofweek"] != null || \n dateHash["recurdays"] != null;\n \n // If we are matching the base date for a dayofweek offset, look for the base date a \n //little further back.\n var tmp1leadTimeLowerBound = leadTimeLowerBound; \n if ( dateHash["offsetdayofweek"] != null)\n {\n tmp1leadTimeLowerBound = leadTimeLowerBound.addDays(-6); \n }\n var matchedDate = baseDate.findMatch(dateHash, tmp1leadTimeLowerBound, leadTimeUpperBound);\n if (matchedDate != null)\n {\n var newMatchedDate = matchedDate;\n if (dateHash["recurdays"] != null)\n {\n while (newMatchedDate.getTime() < leadTimeLowerBound.getTime())\n {\n newMatchedDate = newMatchedDate.addDays(dateHash["recurdays"]);\n }\n }\n else if (dateHash["offsetyear"] != null || \n dateHash["offsetmonth"] != null || \n dateHash["offsetday"] != null || \n dateHash["offsetdayofweek"] != null)\n {\n var tmpdateHash = cloneParams(dateHash);\n tmpdateHash["year"] = dateHash["offsetyear"];\n tmpdateHash["month"] = dateHash["offsetmonth"];\n tmpdateHash["day"] = dateHash["offsetday"];\n tmpdateHash["dayofweek"] = dateHash["offsetdayofweek"];\n var tmpleadTimeLowerBound = leadTimeLowerBound;\n var tmpleadTimeUpperBound = leadTimeUpperBound;\n if (tmpdateHash["offsetdayofweek"] != null)\n {\n if (tmpdateHash["negativeOffsetDayOfWeek"] == 1)\n {\n tmpleadTimeLowerBound = matchedDate.addDays(-6);\n tmpleadTimeUpperBound = matchedDate;\n\n }\n else\n {\n tmpleadTimeLowerBound = matchedDate;\n tmpleadTimeUpperBound = matchedDate.addDays(6);\n }\n\n }\n newMatchedDate = matchedDate.findMatch(tmpdateHash, tmpleadTimeLowerBound, tmpleadTimeUpperBound);\n //The offset couldn't be matched. return null.\n if (newMatchedDate == null)\n {\n return null;\n }\n }\n if (newMatchedDate.isBetween(leadTimeLowerBound, leadTimeUpperBound))\n {\n reminderCache[hashKey] = newMatchedDate;\n return newMatchedDate;\n }\n }\n return null;\n};\n\n//This does much the same job as findDateForReminder, but\n//this one doesn't deal with offsets or recurring \n//reminders.\nDate.prototype.findMatch = function findMatch(dateHash, leadTimeLowerBound, leadTimeUpperBound)\n{\n\n var bSpecifiedYear = (dateHash["year"] != null);\n var bSpecifiedMonth = (dateHash["month"] != null);\n var bSpecifiedDay = (dateHash["day"] != null);\n var bSpecifiedDayOfWeek = (dateHash["dayofweek"] != null);\n if (bSpecifiedYear && bSpecifiedMonth && bSpecifiedDay)\n {\n return new Date(dateHash["year"], dateHash["month"]-1, dateHash["day"], 0, 0);\n }\n var bMatchedYear = !bSpecifiedYear;\n var bMatchedMonth = !bSpecifiedMonth;\n var bMatchedDay = !bSpecifiedDay;\n var bMatchedDayOfWeek = !bSpecifiedDayOfWeek;\n if (bSpecifiedDay && bSpecifiedMonth && !bSpecifiedYear && !bSpecifiedDayOfWeek)\n {\n\n //Shortcut -- First try this year. If it's too small, try next year.\n var tmpMidnight = this.getMidnight();\n var tmpDate = new Date(this.getFullYear(), dateHash["month"]-1, dateHash["day"], 0,0);\n if (tmpDate.getTime() < leadTimeLowerBound.getTime())\n {\n tmpDate = new Date((this.getFullYear() + 1), dateHash["month"]-1, dateHash["day"], 0,0);\n }\n if ( tmpDate.isBetween(leadTimeLowerBound, leadTimeUpperBound))\n {\n return tmpDate;\n }\n else\n {\n return null;\n }\n }\n\n var newDate = leadTimeLowerBound; \n while (newDate.isBetween(leadTimeLowerBound, leadTimeUpperBound))\n {\n var tmp = testDate(newDate, dateHash, bSpecifiedYear, bSpecifiedMonth, bSpecifiedDay, bSpecifiedDayOfWeek);\n if (tmp != null)\n return tmp;\n newDate = newDate.addDays(1);\n }\n};\n\nfunction testDate(testMe, dateHash, bSpecifiedYear, bSpecifiedMonth, bSpecifiedDay, bSpecifiedDayOfWeek)\n{\n var bMatchedYear = !bSpecifiedYear;\n var bMatchedMonth = !bSpecifiedMonth;\n var bMatchedDay = !bSpecifiedDay;\n var bMatchedDayOfWeek = !bSpecifiedDayOfWeek;\n if (bSpecifiedYear)\n {\n bMatchedYear = (dateHash["year"] == testMe.getFullYear());\n }\n if (bSpecifiedMonth)\n {\n bMatchedMonth = ((dateHash["month"] - 1) == testMe.getMonth() );\n }\n if (bSpecifiedDay)\n {\n bMatchedDay = (dateHash["day"] == testMe.getDate());\n }\n if (bSpecifiedDayOfWeek)\n {\n bMatchedDayOfWeek = (dateHash["dayofweek"] == testMe.getDay());\n }\n\n if (bMatchedYear && bMatchedMonth && bMatchedDay && bMatchedDayOfWeek)\n {\n return testMe;\n }\n};\n\n//Returns true if the date is in between two given dates\nDate.prototype.isBetween = function isBetween(lowerBound, upperBound)\n{\n return (this.getTime() >= lowerBound.getTime() && this.getTime() <= upperBound.getTime());\n}\n//Return a new date, with the time set to midnight (0000)\nDate.prototype.getMidnight = function getMidnight()\n{\n return new Date(this.getFullYear(), this.getMonth(), this.getDate(), 0, 0);\n};\n// Add the specified number of days to a date.\nDate.prototype.addDays = function addDays(numberOfDays)\n{\n return new Date(this.getFullYear(), this.getMonth(), this.getDate() + numberOfDays, 0, 0);\n};\n//Return the number of days between two dates.\nDate.prototype.getDifferenceInDays = function getDifferenceInDays(otherDate)\n{\n//I have to do it this way, because this way ignores daylight savings\n var tmpDate = this.addDays(0);\n if (this.getTime() > otherDate.getTime())\n {\n var i = 0;\n for (i = 0; tmpDate.getTime() > otherDate.getTime(); i++)\n {\n tmpDate = tmpDate.addDays(-1);\n }\n return i;\n }\n else\n {\n var i = 0;\n for (i = 0; tmpDate.getTime() < otherDate.getTime(); i++)\n {\n tmpDate = tmpDate.addDays(1);\n }\n return i * -1;\n }\n return 0;\n};\nfunction cloneParams(what) {\n var tmp = {};\n for (var i in what) {\n tmp[i] = what[i];\n }\n return tmp;\n}\n// Substitute date components into a string\nDate.prototype.formatStringDateOnly = function formatStringDateOnly(template)\n{\n template = template.replace("YYYY",this.getFullYear());\n template = template.replace("YY",String.zeroPad(this.getFullYear()-2000,2));\n template = template.replace("MMM",config.messages.dates.months[this.getMonth()]);\n template = template.replace("0MM",String.zeroPad(this.getMonth()+1,2));\n template = template.replace("MM",this.getMonth()+1);\n template = template.replace("DDD",config.messages.dates.days[this.getDay()]);\n template = template.replace("0DD",String.zeroPad(this.getDate(),2));\n template = template.replace("DD",this.getDate());\n return template;\n};\n\n//}}}
\n!Overdue actions\n<<showReminders leadtime:-365...-1 tag:"action !done" format:"DATE: TIDDLER TITLE">>\n!Actions for today and tomorrow\n<<showReminders leadtime:0...1 tag:"action !done" format:"DIFF: TIDDLER TITLE">>\n!All reminders for the next week\n<<showReminders leadtime:0...7 tag:"!done" format:"DIFF: TIDDLER TITLE">>
*Sibel Edmonds' Web Site: http://www.justacitizen.com/\n\n''An Inconvenient Patriot''\nBy DAVID ROSE\n\n\nLove of country led Sibel Edmonds to become a translator for the F.B.I. following 9/11. But everything changed when she accused a colleague of covering up alleged illicit activity involving Turkish nationals. Fired after sounding the alarm, she's now preparing a Supreme Court appeal—and threatening some very powerful people (from [[Vanity Fair, September 2005|http://www.vanityfair.com/commentary/content/printables/051003roco01?print=true]])\n\nIn Washington, D.C., and its suburbs, December 2, 2001, was fine but cool, the start of the slide into winter after a spell of unseasonable warmth. At 10 o'clock that morning, Sibel and Matthew Edmonds were still in their pajamas, sipping coffee in the kitchen of their waterfront town house in Alexandria, Virginia, and looking forward to a well-deserved lazy Sunday.\n\nSince mid-September, nine days after the [[9-11]] attacks, Sibel had been exploiting her fluency in Turkish, Farsi, and Azerbaijani as a translator at the [[FBI]]. It was arduous, demanding work, and Edmonds—who had two bachelor's degrees, was about to begin studying for a master's, and had plans for a doctorate—could have been considered overqualified. But as a naturalized Turkish-American, she saw the job as her patriotic duty.\n\nThe Edmondses' thoughts were turning to brunch when Matthew answered the telephone. The caller was a woman he barely knew—[[Melek Can Dickerson]], who worked with Sibel at the F.B.I. "I'm in the area with my husband and I'd love you to meet him," Dickerson said. "Is it O.K. if we come by?" Taken by surprise, Sibel and Matthew hurried to shower and dress. Their guests arrived 30 minutes later. Matthew, a big man with a fuzz of gray beard, who at 60 was nearly twice the age of his petite, vivacious wife, showed them into the kitchen. They sat at a round, faux-marble table while Sibel brewed tea.\n\nMelek's husband, Douglas, a U.S. Air Force major who had spent several years as a military attaché in the Turkish capital of Ankara, did most of the talking, Matthew recalls. "He was pretty outspoken, pretty outgoing—about meeting his wife in Turkey, and about his job. He was in weapons procurement." Like Matthew, he was older than his wife, who had been born about a year before Sibel.\n\nAccording to Sibel, Douglas asked if she and Matthew were involved with the local Turkish community, and whether they were members of two of its organized groups—the American-Turkish Council ([[ATC]]) and the Assembly of Turkish American Associations ([[ATAA]]). "He said the A.T.C. was a good organization to belong to," Matthew says. "It could help to ensure that we could retire early and live well, which was just what he and his wife planned to do. I said I was aware of the organization, but I thought you had to be in a relevant business in order to join.\n\n"Then he pointed at Sibel and said, 'All you have to do is tell them who you work for and what you do and you will get in very quickly.'" Matthew could see that his wife was far from comfortable: "She tried to change the conversation to the weather and suchlike." But the Dickersons, says Matthew, steered it back to what they called their "network of high-level friends." Some, they said, worked at the Turkish Embassy in Washington. "They said they even went shopping weekly for [one of them] at a Mediterranean market," Matthew says. "They used to take him special Turkish bread."\n\nBefore long, the Dickersons left. At the time, Matthew says, he found it "a strange conversation for the first time you meet a couple. Why would someone I'd never met say such things?"\n\nOnly Sibel knew just how strange. A large part of her work at the F.B.I. involved listening to the wiretapped conversations of people who were targets of counter-intelligence investigations. As she would later tell investigators from the Justice Department's Office of the Inspector General ([[OIG]]) and the U.S. Congress, some of those targets were Turkish officials the Dickersons had described as high-level friends. In Sibel's view, the Dickersons had asked the Edmondses to befriend F.B.I. suspects. (In August 2002, Melek Can Dickerson called Sibel's allegations "preposterous, ludicrous and slanderous.")\n\nSibel also recalled hearing wiretaps indicating that Turkish Embassy targets frequently spoke to staff members at the A.T.C., one of the organizations the Dickersons allegedly wanted her and her husband to join. Sibel later told the O.I.G. she assumed that the A.T.C.'s board—which is chaired by [[Brent Scowcroft]], President [[George H. W. Bush]]'s national-security adviser—knew nothing of the use to which it was being put. But the wiretaps suggested to her that the Washington office of the A.T.C. was being used as a front for criminal activity.\n\nSibel and Matthew stood at the window of their oak-paneled hallway and watched the Dickersons leave. Sibel's Sunday had been ruined.\n\nImmediately and in the weeks that followed, Sibel Edmonds tried to persuade her bosses to investigate the Dickersons. There was more to her suspicions than their peculiar Sunday visit. According to documents filed by Edmonds's lawyers, Sibel believed Melek Can Dickerson had leaked information to one or more targets of an F.B.I. investigation, and had tried to prevent Edmonds from listening to wiretaps of F.B.I. targets herself. But instead of carrying out a thorough investigation of her allegations, at the end of March 2002 the F.B.I. fired Edmonds.\n\nEdmonds is not the first avowed national-security whistle-blower to suffer retaliation at the hands of a government bureaucracy that feels threatened or embarrassed. But being fired is one thing. Edmonds has also been prevented from proceeding with her court challenge or even speaking with complete freedom about the case.\n\nOn top of the usual prohibition against disclosing classified information, the Bush administration has smothered her case beneath the all-encompassing blanket of the "[[state-secrets privilege]]" — a Draconian and rarely used legal weapon that allows the government, merely by asserting a risk to national security, to prevent the lawsuits Edmonds has filed contesting her treatment from being heard in court at all. According to the Department of Justice ([[DOJ]]), to allow Edmonds her day in court, even at a closed hearing attended only by personnel with full security clearance, "could reasonably be expected to cause serious damage to the foreign policy and national security of the United States."\n\nUsing the state-secrets privilege in this fashion is unusual, says Edmonds's attorney Ann Beeson, of the American Civil Liberties Union ([[ACLU]]). "It also begs a question: Just what in the world is the government trying to hide?"\n\nIt may be more than another embarrassing security scandal. One counter-intelligence official familiar with Edmonds's case has told Vanity Fair that the F.B.I. opened an investigation into covert activity by Turkish nationals in the late 1990s. That inquiry found evidence, mainly via wiretaps, of attempts to corrupt senior American politicians in at least two major cities — Washington and Chicago. Toward the end of 2001, Edmonds was asked to translate some of the thousands of calls that had been recorded by this operation, some dating back to 1997.\n\nEdmonds has given confidential testimony inside a secure [[Sensitive Compartmented Information Facility]] on several occasions: to congressional staffers, to investigators from the O.I.G., and to staff from the 9/11 commission. Sources familiar with this testimony say that, in addition to her allegations about the Dickersons, she reported hearing Turkish wiretap targets boast that they had a covert relationship with a very senior politician indeed — [[Dennis Hastert]], Republican congressman from Illinois and Speaker of the House since 1999. The targets reportedly discussed giving Hastert tens of thousands of dollars in surreptitious payments in exchange for political favors and information. "The Dickersons," says one official familiar with the case, "are only the tip of the iceberg."\n\nIt's safe to say that Edmonds inherited her fearless obstinacy from her father, [[Rasim Deniz]], who died in 2000. Born in the Tabriz region of northwestern Iran, many of whose natives speak Farsi (Persian), Turkish, and Azerbaijani, he was one of the Middle East's leading reconstructive surgeons, but his forthright liberal and secular opinions brought him into a series of conflicts with the local regimes. One of Sibel's earliest memories is of a search of her family's house in Tehran by members of [[SAVAK]], the Shah's secret police, who were looking for left-wing books. Later, in 1981, came a terrifying evening after the Ayatollah Khomeini's Islamist revolution, when Sibel was 11. She was waiting in the car while her father went into a restaurant for takeout. By the time Deniz returned, his vehicle had been boxed in by government S.U.V.'s, and Sibel was surrounded by black-clad revolutionary guards, who announced they were taking her to jail because her headscarf was insufficiently modest.\n\n"My father showed his ID and asked them, 'Do you know who I am?,'" Sibel says. "He had been doing pro bono work in the slums of south Tehran for years, and now it was the height of the Iran-Iraq war. He told them, 'I have treated so many of your brothers. If you take my daughter, next time I have one in my operating room who needs an amputation at the wrist, I will cut his arm off at the shoulder.' They let me go."\n\nIt was time to get out. As soon as he could, Deniz abandoned his property and his post as head of the burn center at one of Tehran's most prestigious hospitals, and the family fled to Turkey.\n\nWhen Sibel was 17, she wrote a paper for a high-school competition. Her chosen subject was Turkey's censorship laws, and why it was wrong to ban books and jail dissident writers. Her principal was outraged, she says, and asked her father to get her to write something else. Deniz refused, but the incident caused a family crisis. "My uncle was mayor of Istanbul, and suddenly my essay was being discussed at an emergency meeting of the whole Deniz tribe. My dad was the only one who supported what I'd done. That was the last straw for me. I decided to take a break and go to the United States. I came here and fell in love with a lot of things — freedom. Now I wonder: was it just an illusion?"\n\nSibel enrolled at a college in Maryland, where she studied English and hotel management; later, she received bachelor's degrees at George Washington University in criminal justice and psychology, and worked with juvenile offenders. In 1992, at age 22, she had married [[Matthew Edmonds]], a divorced retail-technology consultant who had lived in Virginia all his life.\n\nFor a long time, they lived an idyllic, carefree life. They bought their house in Alexandria, and Sibel transformed it into an airy, spacious haven, with marble floors, a library, and breathtaking views across the Potomac River to Washington. Matthew had always wanted to visit Russia, and at Sibel's suggestion they spent three months in St. Petersburg, working with a children's hospital charity run by the cellist Mstislav Rostropovich. Sibel's family visited America often, and she and Matthew spent their summers at a cottage they had bought in Bodrum, Turkey, on the Aegean coast.\n\n"People said we wouldn't last two years," Sibel says. "And here we still are, nearly 13 years on. A lot of people who go through the kind of experiences I've had find they put a huge strain on their marriage. Matthew is my rock. I couldn't have done it without him."\n\nIn 1978, when Sibel was eight and the Islamists' violent prelude to the Iranian revolution was just beginning, a bomb went off in a movie theater next to her elementary school. "I can remember sitting in a car, seeing the rescuers pulling charred bodies and stumps out of the fire. Then, on September 11, to see this thing happening here, across the ocean—it brought it all back. They put out a call for translators, and I thought, Maybe I can help stop this from happening again."\n\nThe translation department Edmonds joined was housed in a huge, L-shaped room in the F.B.I.'s Washington field office. Some 200 to 300 translators sat in this vast, open space, listening with headphones to digitally recorded wiretaps. The job carried heavy responsibilities. "You are the front line," Edmonds says. "You are the filter for every piece of intelligence which comes in foreign languages. It's down to you to decide what's important — 'pertinent,' as the F.B.I. calls it — and what's not. You decide what requires verbatim translation, what can be summarized, and what should be marked 'not pertinent' and left alone. By the time this material reaches the agents and analysts, you've already decided what they're going to get." To get this right requires a broad background of cultural and political knowledge: "If you're simply a linguist, you won't be able to discern these differences."\n\nShe was surprised to discover that until her arrival the F.B.I. had employed no Turkish-language specialists at all. In early October she was joined by a second Turkish translator, who had been hired despite his having failed language-proficiency tests.\n\nSeveral weeks later, a third Turkish speaker joined the department: [[Melek Can Dickerson]]. In her application for the job, she wrote that she had not previously worked in America. In fact, however, she had spent two years as an intern at an organization that figured in many of the wiretaps — the American-Turkish Council.\n\nMuch later, after Edmonds was fired, the F.B.I. gave briefings to the House and Senate. One source who was present says bureau officials admitted that Dickerson had concealed her history with the A.T.C., not only in writing but also when interviewed as part of her background security check. In addition, the officials conceded that Dickerson began a friendship at the A.T.C. with one of the F.B.I.'s targets. "They confirmed that when she got to the bureau she was supposed to be listening to his calls," says one congressional source. "To me, that was like asking a friend of a mobster to listen to him ordering hits. She might have an allegiance problem. But they seemed not to get it.… They blew off their friendship as 'just a social thing.' They told us, 'They had been colleagues at work, after all.'"\n\nShortly after the house visit from the Dickersons, Sibel conveyed her version of the event to her supervisor, [[Mike Feghali]] — first orally and then in writing. The "supervisory language specialist" responsible for linguists working in several Middle Eastern languages, Feghali is a Lebanese-American who had previously been an F.B.I. Arabic translator for many years. Edmonds says he told her not to worry.\n\nToward the end of December, Edmonds was absorbed in a translation when Dickerson approached her desk. She swiftly got to the point.\n\nTo monitor every call on every line at a large institution such as the Turkish Embassy in Washington would not be feasible. Inevitably, the F.B.I. listens more carefully to the phones used by its targets, such as the Dickersons' purported friend. In the past, the assignment of lines to each translator had always been random: Edmonds might have found herself listening to a potentially significant conversation by a counter-intelligence target one minute and an innocuous discussion about some diplomatic party the next. Now, however, according to Edmonds, Dickerson suggested changing this system, so that each Turkish speaker would be permanently responsible for certain lines. She produced a list of names and numbers, together with her proposals for dividing them up. As Edmonds would later tell her F.B.I. bosses and congressional investigators, Dickerson had assigned the American-Turkish Council and three other "high-value" diplomatic targets, including her friend, to herself.\n\nEdmonds found this arrangement very questionable. But she says that Dickerson spent a large part of that afternoon talking with Feghali inside his office. The next day he announced in an e-mail that he had decided to assign the Turkish wiretaps on exactly the basis recommended by Dickerson.\n\nLike all the translators, Edmonds was effectively working with two, parallel lines of management: Feghali and the senior translation-department bosses above him, on the one hand, and, on the other, the investigators and agents who actually used the material she translated. Early in the new year, 2002, Edmonds says, she discovered that [[Dennis Saccher]], the F.B.I.'s special agent in charge of Turkish counter-intelligence, had developed his own, quite separate concerns about Dickerson.\n\nOn the morning of January 14, Sibel says, Saccher asked Edmonds into his cramped cubicle on the fifth floor. On his desk were printouts from the F.B.I. language-department database. They showed that on numerous occasions Dickerson had marked calls involving her friend and other counter-intelligence targets as "not pertinent," or had submitted only brief summaries stating that they contained nothing of interest. Some of these calls had a duration of more than 15 minutes. Saccher asked Edmonds why she was no longer working on these targets' conversations. She explained the new division of labor, and went on to tell him about the Dickersons' visit the previous month. Saccher was appalled, Edmonds says, telling her, "It sounds like espionage to me."\n\nSaccher asked Edmonds and a colleague, [[Kevin Taskasen]], to go back into the F.B.I.'s digital wiretap archive and listen to some of the calls that Dickerson had marked "not pertinent," and to re-translate as many as they could. Saccher suggested that they all meet with Feghali in a conference room on Friday, February 1. First, however, Edmonds and Taskasen should go to Saccher's office for a short pre-meeting — to review their findings and to discuss how to handle Feghali.\n\nEdmonds had time to listen to numerous calls before the Friday meeting, and some of them sounded important. According to her later secure testimony, in one conversation, recorded shortly after Dickerson reserved the targets' calls for herself, a Turkish official spoke directly to a U.S. State Department staffer. They agreed that the State Department staffer would send a representative at an appointed time to the American-Turkish Council office, at 1111 14th Street NW, where he would be given $7,000 in cash. "She told us she'd heard mention of exchanges of information, dead drops — that kind of thing," a congressional source says. "It was mostly money in exchange for secrets." (A spokesperson for the A.T.C. denies that the organization has ever been involved in espionage or illegal payments. And a spokesperson for the Assembly of Turkish American Associations said that to suggest the group was involved with espionage or illegal payments is "ridiculous.")\n\nAnother call allegedly discussed a payment to a Pentagon official, who seemed to be involved in weapons-procurement negotiations. Yet another implied that Turkish groups had been installing doctoral students at U.S. research institutions in order to acquire information about black-market nuclear weapons. In fact, much of what Edmonds reportedly heard seemed to concern not state espionage but criminal activity. There was talk, she told investigators, of laundering the profits of large-scale drug deals and of selling classified military technologies to the highest bidder.\n\nBefore entering the F.B.I. building for their Friday meeting with Saccher, Edmonds and Taskasen stood for a while on the sidewalk, smoking cigarettes. "Afterwards, we went directly to Saccher's office," Edmonds says. "We talked for a little while, and he said he'd see us downstairs for the meeting with Feghali a few minutes later, at nine a.m." They were barely out of the elevator when Feghali intercepted them. He didn't know they had just come from Saccher's office.\n\n"Come on, we're going to start the meeting," he said. "By the way, Dennis Saccher can't be there. He's been sent out somewhere into the field." Later, Edmonds says, she called Saccher on the internal phone. "Why the hell did you cancel?" she asked. Bewildered, he told her that immediately after she and Taskasen had left his office Feghali phoned him, saying that the conference room was already in use, and that the meeting would have to be postponed.\n\nEdmonds says Saccher also told her that he had been ordered not to touch the case by his own superiors, who called it a "can of worms." Despite his role as special agent in charge of Turkish counter-intelligence, he had even been forbidden to obtain copies of her translations. Saccher had two small children and a settled life in Washington. If he dared to complain, Edmonds says, he risked being assigned "to some fucked-up office in the land of tornadoes."\n\nInstead, Edmonds was ushered into the windowless office of Feghali's colleague, translation-department supervisor [[Stephanie Bryan]]. Investigating possible espionage was not a task for which Bryan had been trained or equipped.\n\nBryan heard Edmonds out and told her to set down her allegations in a confidential memo. Edmonds says that Bryan approved of her writing it at home. Edmonds gave the document to Bryan on Monday, February 11. Early the following afternoon, the supervisor summoned Edmonds. Waiting in a nearby office were two other people, Feghali and Melek Can Dickerson. In front of them were Edmonds's translations of the wiretaps and her memo.\n\n"Stephanie said that she'd taken my memo to the supervisory special agent, [[Tom Frields]]," Edmonds says. "He apparently wouldn't even look at it until Mike Feghali and Dickerson had seen it and been given a chance to comment. Stephanie said that, working for the government, there were certain things you didn't do, and criticizing your colleagues' work was one of them. She told me, 'Do you realize what this means? If you were right, the people who did the background checks would have to be investigated. The whole translation department could be shaken up!' Meanwhile, I was going to be investigated for a possible security breach — for putting classified information onto my home computer. I was told to go to the security department at three p.m."\n\nBefore Edmonds left, Dickerson had time to sidle over to her desk. According to Edmonds, she made what sounded like a threat: "Why are you doing this, Sibel? Why don't you just drop it? You know there could be serious consequences. Why put your family in Turkey in danger over this?"\n\nEdmonds says that the F.B.I.'s response to her was beginning to shift from indifference to outright retaliation. On February 13, the day after her interview with the bureau security office, three agents came to her home and seized the computer she shared with her husband. "I hadn't had time to back up the data, and I told them that most of my business was on that computer," Matthew Edmonds says.\n\n"An agent called the next morning," Matthew says. "He told me, 'Everything on your computer is destroyed, and we didn't back it up.' They were playing games. When I got the computer back, they had wiped everything. Four days later, I got a CD-ROM with it all backed up." A lifelong conservative Republican, Matthew was being shocked into changing his worldview. "I was so naïve. I mean, what do you do if you think your colleague might be a spy? You go to the F.B.I.! I thought if Sibel's supervisor wasn't fixing this problem she should go to his superior, and so on up the chain. Someone would eventually fix it. I was never a cynical person. I am now."\n\nWhile the agents were examining the Edmondses' computer, Mike Feghali was writing a memo for his own managers, stating "there was no basis" for Sibel's allegations. A day earlier, an F.B.I. security officer had interviewed Dickerson. A report issued by the O.I.G. in January 2005 states, "The Security Officer did not challenge the co-worker [Dickerson] with respect to any information the co-worker provided, although that information was not consistent with F.B.I. records. In addition … he did not review other crucial F.B.I. records, which would have supported some of Edmonds' allegations." Instead, he treated her claims as "performance issues," and "seemed not to appreciate or investigate the allegation that a co-worker may have been committing espionage."\n\nAccording to a congressional source, the fact that Edmonds was a mere contract linguist, rather than an agent, made her claims less palatable. "They seemed to be saying, 'We don't need someone like this making trouble,'" the source says. "Yet, to her credit, she really did go up through the chain of command: to her boss, his boss, and so on."\n\nEdmonds reached the top of the language-section management on February 22, when she met with supervisory special agent [[Tom Frields]], a gray-haired veteran who was approaching the end of a long bureau career. At first it seemed he was trying to set her mind at rest: "He told me, 'I just want to assure you that everything is fine, and as far as you're concerned, your work on this matter is done,'" Edmonds says. "I told him, 'No, it's not fine. My family is worried about possible threats to their safety in Turkey.' His face went through a transformation. He warned me that these issues were classified at the highest level and must not be disclosed to anyone. He started to interrogate me: Who had I told? He said if it was anyone unauthorized he could have me arrested."\n\nEdmonds's meeting with Frields on the 22nd was probably her last chance to save her job. The inspector general's 2005 report disclosed, "Immediately after the meeting, [Frields] began to explore whether the F.B.I. had the option to cease using Edmonds as a contract linguist." Four days later the bureau's contracting unit told him, "If it was determined that [she] was unsuitable, the F.B.I. would have sufficient reason to terminate her contract."\n\nStymied by Frields, Edmonds tried to go still higher, and on March 7 she was granted an audience with [[James Caruso]], the F.B.I.'s deputy assistant director for counterterrorism and counter-intelligence. Edmonds says he listened politely for more than an hour but took no notes and asked no questions. Afterward, Matthew picked her up and they drove to the Capital Grille for an early lunch. It was only 11:30 and the restaurant was still empty, but as the Edmondses began to study their menus, they saw two men in suits pull up outside in an F.B.I.-issue S.U.V. They came inside and sat down at the next table.\n\n"They just sat and stared at Sibel," Matthew says. "They took out their cell phones, opened them, and put them on the table. They didn't eat or drink — just sat, staring at Sibel, the whole time we were there." Modified cell phones, Sibel knew, are commonly used by bureau agents as a means of making covert recordings.\n\nThat afternoon, Sibel wrote to two official bodies with powers to investigate the F.B.I. — the Justice Department's internal-affairs division, known as the [[Office of Professional Responsibility]], and its independent watchdog, the O.I.G. She went on to send faxes to the [[Senate Intelligence Committee]] and Senators [[Charles Grassley]], Republican from Iowa, and [[Patrick Leahy]], Democrat from Vermont, both of whom sit on the [[Senate Judiciary Committee]], to say that she had found evidence of possible national-security breaches.\n\nOn March 8, Sibel appeared at a dingy little office in Washington's Chinatown, where she was polygraphed. According to the 2005 inspector general's report, the purpose of this examination was to discover whether she had made unauthorized disclosures of classified information. "She was not deceptive in her answers," the O.I.G. reported.\n\nDickerson was polygraphed two weeks later, on March 21, and she too was deemed to have passed. But, according to an official cited in the report, the questions she was asked were vague and nonspecific: "The Polygraph Unit Chief admitted that questions directly on point could have been asked but were not." Nevertheless, then and for a long time afterward, the F.B.I. "continued to rely on the [Dickerson] polygraph as support for its position that Edmonds' allegations were unfounded."\n\nDickerson's polygraph test, however unsatisfactory, seems to have sealed Edmonds's fate at the F.B.I. The following afternoon, she was asked to wait in Stephanie Bryan's office. "Feghali saw me sitting there and leaned across the doorway," Edmonds says. "He tapped his watch and said, '//In less than an hour you will be fired, you whore//.'" A few minutes later, she was summoned to a meeting with Frields. They were joined by Bryan and [[George Stukenbroeker]], the chief of personnel security and the man in charge of investigating her case. Edmonds had violated every security rule in the book, Stukenbroeker said.\n\nA hulking security guard arrived to help escort her from the building. Edmonds asked if she could return to her desk to retrieve some photos, including shots of her late father of which she had no copies. Bryan refused, saying, "You'll never set foot in the F.B.I. again." Bryan promised to forward them, says Edmonds, who never got the photos back. Edmonds looked at Frields. "You are only making your wrongdoing worse, and my case stronger. I will see you very soon," she told him. According to Edmonds, Frields replied, "Soon maybe, but it will be in jail. I'll see you in jail." (When interviewed by the O.I.G., Frields and another witness denied his making this comment.)\n\nMatthew was waiting outside. "I'm not a crybaby," Sibel says. "But as I got into my husband's car that afternoon I was in floods, shaking."\n\nAs soon as she had returned home from the February meeting where Dickerson allegedly cautioned her not to endanger her family in Turkey, Sibel called her mother and sister in Istanbul, even though it was the middle of the night there. Sibel is the oldest of three sisters. The youngest was studying in America and living with the Edmondses in Alexandria, but the middle sister — whose name Edmonds wishes to protect — was enjoying a successful career at an international travel company based in Istanbul. The 29-year-old was also engaged to be married. Within days of receiving Sibel's call, she flew with her mother to Washington.\n\nEarly in April, Sibel and Matthew were having lunch in their favorite Thai restaurant in Old Town Alexandria — a precious chance, with their house now fully occupied by Sibel's family, to share a private moment together. "My cell phone rang," Sibel says. "It was my middle sister. She said something really bad had happened and I must come back at once."\n\nThe sister's Istanbul neighbor had just phoned, saying that two policemen had knocked on her door, asking for the sister's whereabouts. They would not disclose the reason, saying only that it was an "intelligence matter." They also left a document. Sent by [[Tevfik Asici]] of the Atakoy Branch Police Station and dated April 11, it was addressed to Sibel's sister and read, "For an important issue your deposition/interrogation is required. If you do not report to the station within 5 days, between 09:00 and 17:00, as is required by Turkish law CMK.132, you will be taken/arrested by force."\n\nIn July 2002, with a written recommendation from Senator Grassley, Sibel's sister requested political asylum in the United States. Her application statement cited the threat allegedly made by Dickerson, adding that Sibel would now be considered "a spy and a traitor to Turkey under Turkish law, and the Turkish police will use me to get at her. Turkish police are known for using cruelty and [[torture]] during interrogation; subjects are kept without advice to family members and often disappear with no trace." Estranged from Sibel, the sister remains in America, unable to go home.\n\nEdmonds did what numerous avowed whistle-blowers had done before: she appealed to Congress, and she got a lawyer — [[David Colapinto]] of the Washington firm [[Kohn, Kohn & Colapinto]], which advertises itself on its Web site as specializing in cases of this kind. He filed suit under the Freedom of Information Act ([[FOIA]]) for full disclosure of what had happened inside the bureau, and submitted a claim for damages for the violation of Edmonds's constitutional rights. By August he was ready to depose Douglas and Melek Can Dickerson. But before their scheduled deposition, the couple abruptly left the country. Douglas had been assigned to an air-force job in Belgium. [[Virgil Magee]], a U.S. Air Force spokesman in Belgium, confirms that Dickerson remains on active duty in Europe, but refuses to say exactly where.\n\nThat fall, Attorney General [[John Ashcroft]] tried to wipe out Edmonds's legal action by invoking the [[state-secrets privilege]]. This recourse, derived from English common law, has never been the subject of any congressional vote or statute. Normally, says Ann Beeson of the A.C.L.U., it is used by the government when it wants to resist the legal "discovery" in court of a specific piece of evidence that it fears might harm national security if publicized. But in Edmonds's case Ashcroft argued that the very subject of her lawsuit was a state secret. To air her claims in front of federal judges would jeopardize national security.\n\nThis, Beeson says, had distinct advantages for the F.B.I. and the Department of Justice: it meant they did not have to contest the merits of her claims. Moreover, the substance of the arguments they used to justify this level of secrecy was and is secret itself. The full version of Ashcroft's declaration invoking the privilege, filed on October 18, 2002, was classified, and in public the case for blocking Edmonds's action rested on the mere assertion that it would be damaging to proceed. Later, in 2004, the law firm [[Motley Rice]] sought to depose her for a pending case on behalf of the families of 9/11 victims. Immediately, Ashcroft asserted the privilege again. Motley Rice submitted a list of questions it wanted to ask Edmonds, almost all of which were prohibited. Among them: "When and where were you born?," "What languages do you speak?," and "Where did you go to school?"\n\nEdmonds still wanted to fight, and to challenge Ashcroft in court. But over the next few months, the relationship with her lawyers began to suffer. "Let's face it, taking on the D.O.J. is no joke, especially in Washington," Edmonds says.\n\nIt was the absolute low point. "I tried to find another firm," she says, "but as soon as I mentioned the state-secrets privilege, it was like, 'Turn around, go back, and by the way the clock is running at $450 an hour.' I must have been turned away by 20 firms."\n\nThe Dickersons, the Justice Department, and the F.B.I. and its relevant personnel declined to comment for this article. In August 2002, Melek Can Dickerson told the Chicago Tribune, "both the F.B.I. and the Department of Justice have conducted separate investigations of [Edmonds's] claims.… They fired her and, interestingly, they continued my contract."\n\nIn September 2002, Colonel [[James Worth]] of the Office of the Air Force Inspector General said that, in response to a letter from Edmonds, there had been a "complete and thorough review of Major [Douglas] Dickerson's relationship with the American-Turkish Council" that found "no evidence of any deviation from the scope of his duties." Edmonds says she was not interviewed by those conducting the review.\n\nEdmonds's treatment by the F.B.I. seems to fit two baleful patterns: the first is the bureau's refusal to address potentially disastrous internal-security flaws; the second is a general tendency among national-security agencies to retaliate against whistle-blowers.\n\nAmid the lush greenery of his parents' garden in Plattsmouth, Nebraska, former F.B.I. senior intelligence-operations specialist [[John Cole]] describes how these institutional inclinations combined to destroy his career. Now 44, Cole joined the F.B.I. in 1985. By the late 1990s, he was running undercover operations in the Washington area, focusing on counterterrorism and counter-intelligence. Later, while also playing a key role in the 9/11 investigation, he became the F.B.I.'s national counter-intelligence program manager for India, Afghanistan, and Pakistan.\n\nEarly in the fall of 2001, Cole was asked to assess whether a woman who had applied to work as a translator of Urdu, Pakistan's national language, might pose a risk to security. "The personnel security officer said she thought there was something that didn't seem right," Cole says. "I went through the file and it stuck out a mile: she was the daughter of a retired Pakistani general who had been their military attaché in Washington." He adds that, to his knowledge, "Every single military attaché they've ever assigned has been a known intelligence officer."\n\nAfter September 11, this association looked especially risky. The Pakistani intelligence service had trained and supported the [[Taliban]] in Afghanistan, and still contained elements who were far from happy with President [[Pervez Musharraf]]'s pro-American policies. Cole gave his findings to the security officer. "Well done," she said. "You've found it."\n\nA week later, she called Cole again, to say that the woman had started work that morning with a top-secret security clearance. F.B.I. director [[Robert Mueller]] had promised Congress that the bureau would hire lots of new Middle Eastern linguists, and normal procedures had been short-circuited as a result. As of July 2005, the woman was still a bureau translator. Sibel Edmonds says she remembers her well — as the leader of a group that pressed for separate restrooms for Muslims.\n\nCole says the incident was only one of several that caused him to doubt the quality and security of the F.B.I.'s counterterrorism efforts, and, like Edmonds, he says he tried to fix the problems he saw by going up the chain of command. Getting rid of an agent of his stature was a lot more difficult than firing a contract linguist. Cole says the retaliation began when, after years of glowing reports, his annual appraisal found his work in one area to be "minimally acceptable." Next, he was placed under investigation by the [[Office of Professional Responsibility]], first on a charge that he had lied about a personal loan on a routine background check, and then, after he took his case to Congress, on the same grounds used against Edmonds — that he had disclosed classified information without authorization. Finally, he was demoted to menial roles: "They literally had me doing the xeroxing." Bitterly disillusioned, he says, he resigned in March 2004.\n\n"According to the terms of our employment, whistle-blowing is an obligation," Cole says. "We sign a piece of paper every year saying we will report any mismanagement or evidence of a possible crime. But the management's shtick is that if you draw attention to the bureau's shortcomings you're disgracing it."\n\nCole is one of about 50 current and former members of the FBI, CIA, National Security Agency (NSA), and other bodies who have made contact recently with Sibel Edmonds. Another is [[Mike German]], one of the bravest and most successful counterterrorism agents in the bureau's history, who penetrated a neo-Nazi gang in Los Angeles and a militia group in Seattle and brought them to justice.\n\nGerman made his bed of nails in 2002, when he was asked to get involved in an investigation into a suspected cell of Islamist terrorists. "I came down and reviewed the case, and it was a complete mess," he says. "There were violations of F.B.I. policy and violations of the law. As someone who had been through successful terrorism prosecutions, I knew you couldn't afford to make mistakes."\n\nLike Cole, German says he thought himself obliged to report what was going wrong, not to penalize other agents but in the hope of putting it right. "I thought the bureau would do the right thing: that the case would get back on track, and we'd get the opportunity to take action against the bad guys involved." Instead, he says, he faced the familiar litany of escalating retaliation — including an internal investigation of his own work on the terrorist-cell case. "Bear in mind that only a handful of people have ever infiltrated terrorist groups," German says. "You'd think that after 9/11 they might have been interested in that. But word came back to me that I'd never get a counterterrorist case again." He resigned from the bureau in June 2004.\n\nAs I talked to whistle-blowers, I had the impression that those treated the worst were among the brightest and best. There could be no clearer example than Russell Tice, an 18-year intelligence veteran who has worked for the Pentagon's Defense Intelligence Agency (D.I.A.) and America's eavesdroppers, the National Security Agency. "I dealt with the super-sensitive stuff," he says. "I obviously can't talk about it, but I had operational roles in both Afghanistan and Iraq."\n\nIt was at the D.I.A. in the spring of 2001 that he wrote a report setting down his suspicions about a junior colleague, a Chinese-American who Tice says was living a lavish lifestyle beyond her apparent means. Although she was supposed to be working on a doctorate, he noticed her repeatedly in the office, late at night, reading classified material on an agency computer. "It's not like I obsessed over the issue," Tice says. "I did my job, and then 9/11 happened, and I was a very busy boy."\n\nHe moved to the N.S.A. toward the end of 2002. The trigger for his downfall the following April was the arrest of [[Katrina Leung]], the F.B.I. informant accused of spying for China while having an affair with a bureau agent. It prompted Tice to send a classified e-mail to the D.I.A. security section, commenting that the Leung case showed that the F.B.I. was "incompetent." The implication was that the D.I.A. could prove its competence by fully investigating the junior colleague.\n\nTice, a big, powerful man with a forthright manner, has to pause to control his emotions when he describes what happened as a consequence. "I was sent for an emergency psychiatric evaluation. I took all the computer tests and passed them with flying colors. But then the shrink says he believes I'm unbalanced. Later he said I'm suffering from 'paranoid ideation.'" He was examined by an independent psychiatrist, who "found no evidence of mental disorder." But he had already been denied access to secure places at the N.S.A. As a result, this highly commended technical-espionage expert was put to work in the N.S.A.'s motor pool, "wiping snow off cars, vacuuming them, and driving people around. People looked at me like I had bubonic plague." (The D.I.A. did not respond to a request for comment, and an N.S.A. spokesperson said the agency does not discuss personnel matters.)\n\nAfter about eight months of this purgatory, apparently an attempt to persuade him to resign, he was placed on "administrative leave." Like other whistle-blowers, he tried and failed to get his agency's leadership to redress his treatment. In August 2004, Tice wrote letters to members of the House and Senate. Six days later, the [[NSA]] began the formal process which would lead to his getting fired, and to having his clearance revoked permanently. "What happened to me was total Stalin-era tactics," he says. "Everyone I know or ever worked with says I'm perfectly sane. Yet I just don't know what to do next. I've been in intelligence all my life, but without a security clearance, I can't practice my trade."\n\nEchoing Cole and German, one of the congressional staffers who heard Edmonds's secure testimony likens the F.B.I. to a family, "and you don't take your problems outside it. They think they're the best law-enforcement agency in the world, that they're beyond criticism and beyond reproach." To an outside observer that ethos alone might explain the use of the state-secrets privilege against Edmonds. But, the staffer adds, some of the wiretaps she said she translated "mentioned government officials." Here may lie an entirely different dimension to her case.\n\nVanity Fair has established that around the time the Dickersons visited the Edmondses, in December 2001, [[Joel Robertz]], an F.B.I. special agent in Chicago, contacted Sibel and asked her to review some wiretaps. Some were several years old, others more recent; all had been generated by a counter-intelligence investigation that had its start in 1997. "It began in D.C.," says an F.B.I. counter-intelligence official who is familiar with the case file. But "it became apparent that Chicago was actually the center of what was going on."\n\nIts subject was explosive: what sounded like attempts to bribe elected members of [[Congress]], both [[Democrat]] and [[Republican]]. "There was pressure within the bureau for a special prosecutor to be appointed and take the case on," the official says. Instead, his colleagues were told to alter the thrust of their investigation—away from elected politicians and toward appointed officials. "This is the reason why Ashcroft reacted to Sibel in such an extreme fashion," he says. "It was to keep this from coming out."\n\nIn her secure testimony, Edmonds disclosed some of what she recalled hearing. In all, says a source who was present, she managed to listen to more than 40 of the Chicago recordings supplied by Robertz. Many involved an F.B.I. target at the city's large Turkish Consulate, as well as members of the American-Turkish Council and the Assembly of Turkish American Associations.\n\nSome of the calls reportedly contained what sounded like references to large-scale drug shipments and other crimes. To a person who knew nothing about their context, the details were confusing, and it wasn't always clear what might be significant. One name, however, apparently stood out — a man the Turkish callers often referred to by the nickname "Denny boy." It was the Republican congressman from Illinois and Speaker of the House, [[Dennis Hastert]]. According to some of the wiretaps, the F.B.I.'s targets had arranged for tens of thousands of dollars to be paid to Hastert's campaign funds in small checks. Under [[Federal Election Commission]] rules, donations of less than $200 are not required to be itemized in public filings.\n\nHastert himself was never heard in the recordings, Edmonds told investigators, and it is possible that the claims of covert payments were hollow boasts. Nevertheless, an examination of Hastert's federal filings shows that the level of un-itemized payments his campaigns received over many years was relatively high. Between April 1996 and December 2002, un-itemized personal donations to the Hastert for Congress Committee amounted to $483,000. In contrast, un-itemized contributions in the same period to the committee run on behalf of the House majority leader, [[Tom DeLay]], Republican of Texas, were only $99,000. An analysis of the filings of four other senior Republicans shows that only one, [[Clay Shaw]], of Florida, declared a higher total in un-itemized donations than Hastert over the same period: $552,000. The other three declared far less. Energy and Commerce Committee chairman [[Joe Barton]], of Texas, claimed $265,000; Armed Services Committee chairman [[Duncan Hunter]], of California, got $212,000; and Ways and Means Committee chairman [[Bill Thomas]], of California, recorded $110,000.\n\nEdmonds reportedly added that the recordings also contained repeated references to Hastert's flip-flop, in the fall of 2000, over an issue which remains of intense concern to the Turkish government — the continuing campaign to have Congress designate the killings of Armenians in Turkey between 1915 and 1923 a genocide. For many years, attempts had been made to get the House to pass a genocide resolution, but they never got anywhere until August 2000, when Hastert, as Speaker, announced that he would give it his backing and see that it received a full House vote. He had a clear political reason, as analysts noted at the time: a California Republican incumbent, locked in a tight congressional race, was looking to win over his district's large Armenian community. Thanks to Hastert, the resolution, vehemently opposed by the Turks, passed the [[International Relations Committee]] by a large majority. Then, on October 19, minutes before the full House vote, Hastert withdrew it.\n\nAt the time, he explained his decision by saying that he had received a letter from President Clinton arguing that the genocide resolution, if passed, would harm U.S. interests. Again, the reported content of the Chicago wiretaps may well have been sheer bravado, and there is no evidence that any payment was ever made to Hastert or his campaign. Nevertheless, a senior official at the Turkish Consulate is said to have claimed in one recording that the price for Hastert to withdraw the resolution would have been at least $500,000.\n\nHastert's spokesman says the congressman withdrew the genocide resolution only because of the approach from Clinton, "and to insinuate anything else just doesn't make any sense." He adds that Hastert has no affiliation with the [[ATC]] or other groups reportedly mentioned in the wiretaps: "He does not know these organizations." Hastert is "unaware of Turkish interests making donations," the spokesman says, and his staff has "not seen any pattern of donors with foreign names."\n\nFor more than two years after Edmonds was fired, the Office of the Inspector General's inquiry ground on. At last, in July 2004, its report was completed — and promptly labeled classified at the behest of the F.B.I. It took months of further pressure before a redacted, unclassified version was finally issued, in January 2005. It seemed to provide stunning vindication of Edmonds's credibility.\n\n"Many of Edmonds' core allegations relating to the co-worker [Melek Can Dickerson] were supported by either documentary evidence or witnesses," the report said. "We believe that the F.B.I. should have investigated the allegations more thoroughly."\n\nThe F.B.I. had justified firing Edmonds on the grounds that she had a "disruptive effect," the report went on. However, "this disruption related primarily to Edmonds' aggressive pursuit of her allegations of misconduct, which the F.B.I. did not believe were supported and which it did not adequately investigate. In fact, as we described throughout our report, many of her allegations had bases in fact," the report read. "We believe … that the F.B.I. did not take them seriously enough, and that her allegations were, in fact, the most significant factor in the F.B.I.'s decision to terminate her services."\n\nMeanwhile, Edmonds had new lawyers: the A.C.L.U.'s Ann Beeson, who is leading the challenge to the state-secrets privilege, and [[Mark Zaid]], a private attorney who specializes in national-security issues. Zaid has filed a $10 million tort suit, citing the threats to Edmonds's family, her inability to look after her real-estate and business interests in Turkey, and a series of articles in the Turkish press that have vilified her.\n\nIn July 2004, a federal district court had ruled in favor of the government's use of the state-secrets privilege. Like Ashcroft's declaration, its opinion contained no specific facts. Next came a bizarre hearing in the D.C. appeals court in April 2005. The room was cleared of reporters while Beeson spoke for 15 minutes. Then Beeson and Edmonds were also expelled to make way for the Department of Justice's lawyers, who addressed the judges in secret. Two weeks later, the court rejected Edmonds's appeal, without expanding on the district court's opinion. At press time, she was set to file a brief with the U.S. Supreme Court. If the court agrees to take the case, the government's reasons for its actions may finally be forced into the open; legal experts say the Supreme Court has never allowed secret arguments.\n\nA week after the April appeal hearing, Edmonds gathered more than 30 whistle-blowers from the F.B.I., C.I.A., National Security Agency, Department of Homeland Security, and other agencies to brief staffers from the House and Senate. Among the whistle-blowers were [[Daniel Ellsberg]], who leaked the Pentagon Papers to The New York Times in 1971, and [[Coleen Rowley]], the F.B.I. agent from Minneapolis who complained that Washington ignored local agents who in August 2001 had raised concerns about a flight student named [[Zacarias Moussaoui]], who has since admitted to being an [[al-Qaeda]] terrorist.\n\nMany of those present had unearthed apparent breaches of national security; many said their careers had been wrecked as a result. At a press conference after the briefings, Congressman [[Edward Markey]], Democrat of Massachusetts, praised Edmonds and her colleagues as "national heroes," pledging that he would introduce a bill to make it a crime for any agency manager to retaliate against such individuals. Afterward, the whistle-blowers mingled over hors d'oeuvres and explored their common ground and experiences. By July, they were working to formalize their association as a not-for-profit campaign group, the [[National Security Whistleblowers Coalition|http://www.nswbc.org/]]. "When they took on Sibel," says Mike German, who is now the coalition's congressional liaison, "they made the wrong woman mad."\n\n"I'm going to keep pushing this as long as I can, but I'm not going to get obsessional," Edmonds says. "There's other things I want to do with my life. But the day the Iranians tried to arrest me, my father told me, 'Sibel, you live your life once. How do you choose to live? According to your principles, or in fear?' I have never forgotten those words."\n\n----\n\nContributing editor David Rose is the author of Guantánamo: The War on Human Rights, which grew out of his V.F. article "Guantánamo Bay on Trial."\nIllustrations by TIM SHEAFFER\n\n----\n\n//Sibel Edmonds, a former translator for the FBI, claims the administration knew a great deal. Her allegations have taken on a life of their own as the government has sought to silence her. It is not likely that the government would choose the course it has taken if her allegations were mere conspiracy theories.//\n\nJudge [[Reggie Walton]] upheld Ashcroft's claim of a "state secret privilege" on July 6, 2004.\n\nThe Inspector General of the Department of Justice issued a report in July 2004 regarding Sibel's wrongful termination case and the report was immediately classified. On July 29, the New York Times reported that the Inspector General's investigation concluded that Sibel Edmonds was fired in part because she accused the FBI of ineptitude.\n\nIt was also reported that the investigation found that the FBI did not agressively investigate Sibel's claims of espionage by a co-worker. This news account was verified in January 2005 when the report was declassified after Sibel filed suit under the Freedom of Information and Privacy Act (FOIPA) to release the report.\n\nThe 9/11 Commission released their report in August 2004 and Sibel's testimony was not mentioned. The report contained only a footnote related to problems in the FBI's translation unit. Sibel responded by writing an [[open letter|http://www.commondreams.org/views04/0802-06.htm]] to Chairman [[Thomas Kean]] asking why certain information had been omitted from the 9/11 Commission Report. The letter contains a number of issues that were not mentioned in the report.\n\nOn September 4, 2004, the same day Sibel filed the FOIPA suit to declassify the DOJ Inspector General's report, the New York Times reported that the FBI's translation unit had 120,000 hours of untranslated tapes. According to an Associated Press article from February 25, 2005, FBI Director Mueller says the FBI has worked on the backlog and it is now minimal. Mueller did not provide any specific numbers.\n\nThe AP article confirms Sibel's early allegations of FBI ineptitude. An audit by the Justice Department Inspector General found that more than a third of al Qaida intercepts were not promptly reviewed. The article reports that over 123,000 hours of audio associated with terrorists had not been reviewed as of April 2004 and that more than 370,000 hours of audio associated with counter-intelligence had not been reviewed.\n\nIt was also reported that the audit revealed that the budget for FBI's language services has more than tripled to $70 million since 2001 and the number of Arabic linguists has tripled to more than 200 since 9/11.\n\nThe Sibel Edmonds case continues to take strange twists and turns. On February 22, 2005, UPI reported: The Department of Justice has abandoned its claim that allegations made by a fired FBI translator are secret, paving the way for a court case that will air embarrassing allegations about incompetence, poor security and possible espionage in the translation unit of the Bureau's Washington Field Office.\n\nFour days later, the New York Times reported: The government has told a federal appeals court that a suit by an F.B.I. translator who was fired after accusing the bureau of ineptitude should not be allowed to proceed because it would cause "significant damage to the national security and foreign policy of the United States".\n\nSo, the government drops the obscure "state secrets privilege" roadblock and replaces it by invoking "national security". It is likely that Sibel Edmonds will appeal the case to the Supreme Court if the federal appeals court rules against her.\n\nWhatever the outcome of her wrongful termination suit, it is obvious that the government and the press are not addressing Sibel's allegations that senior officials had prior knowledge of al Qaida attacks. Perhaps even more disturbing is the possibility that the Bush administration is preventing the prosecution of known individuals and groups for their roles in the 9/11 attacks.\n\nThat government officials are seeking to avoid accountability by keeping the identities of those involved a secret indicates that these officials may have some connection to those involved. If that is true, these government officials may be guilty of being accessories to the crime of 9/11, before and/or after the fact.\n\nAssuming that the allegations made by Sibel Edmonds are true and government officials are covering up evidence, a serious breach of trust has taken place. Individuals or organizations that played a role in the 9/11 attacks should be immediately brought to justice and government officials attempting to obstruct justice should be thrown in prison.\n\n----\n\n//It is apparent that this administration confidently expects the American people to sign blank checks unquestioningly. It is obvious that they believe they are entitled to unchecked power, unlimited authority, and unquestioning citizens' support. To them, our Bill of Rights under the Constitution is nothing more than an inconvenient roadblock to overcome; our American system of checks and balances can be bypassed by overusing national security; and people's dissent is a problem that can be diverted away by a culture of fear and complete submission to government authority.\n\nAs I have stated many times previously, I will continue this fight, since in taking my citizenship oath I pledged that I would support and defend the Constitution and laws of the United States of America against all enemies, foreign and domestic. Therefore, as an American citizen, I have the right and the obligation to defend the Constitution and laws of the United States against John Ashcroft's assaults.//\n\nSibel Edmonds - [[July 2004|http://antiwar.com/edmonds/?articleid=2960]]
<html><a href="javascript:void(0)" onclick="story.closeAllTiddlers();story.displayTiddlers(null,store.getTiddlerText('DefaultTiddlers').readBracketedList())"\n>home</a></html><<search>><<closeAll>><<permaview>><<newTiddler>><<newJournal 'DD MMM YYYY' journal>><<saveChanges>><<upload http://infinite.tiddlyspot.com/store.cgi index.html . . infinite>><html><a href='http://infinite.tiddlyspot.com/download' class='button'>download</a></html><<slider chkSliderOptionsPanel OptionsPanel 'options »' 'Change TiddlyWiki advanced options'>>
[[1.6180339887...]]
[[infinite]]
The following items are tagged for indefinite future action, using the configuration-specified "someday" context. Note that items here should ''not'' be actions or projects, but rather generic tiddlers with whatever supporting content is appropriate.\n\n<<list tagged txtGTDSomedayContext any>>\n
[[GTDStyleSheet]]\n\n/***\n!Personal preferences\n***/\n\n/*{{{*/\n/* make input fields in viewer (options) show up in correct size */\n.viewer input { font-size: 0.9em; }\n\n.siteTitle a { text-decoration:none; }\n\n.tiddler {\n font-size: small;\n font-family: Georgia, "Lucida Grande", "Bitstream Vera Sans", Helvetica, Verdana, Arial, sans-serif;\n}\n\nblockquote {\nbackground: white;\nmargin: 10px;\nborder: 1px dotted #667766;\npadding:5px;\nfont-size: small;\nfont-family: "Lucida Grande", "Bitstream Vera Sans", Helvetica, Verdana, Arial, sans-serif;\n}\n\n.question{\nmargin: 10px auto;\npadding:5px;\ncolor: #31AD49;\nfont-weight: bold;\n}\n\n.moveover{\nmargin-left:120px;\n}\n\n/*}}}*/\n\n
/***\nSee [[ColorKey]]\n\n!Generic Rules /%==============================================%/\n***/\n/*{{{*/\nbody {\n background: #fff;\n color: #000;\n}\n\na{\n color: #04b;\n}\n\na:hover{\n background: #04b;\n color: #fff;\n}\n\na img{\n border: 0;\n}\n\nh1,h2,h3,h4,h5 {\n color: #703;\n background: #8cf;\n}\n\n.button {\n color: #014;\n border: 1px solid #fff;\n}\n\n.button:hover {\n color: #014;\n background: #fe8;\n border-color: #db4;\n}\n\n.button:active {\n color: #fff;\n background: #db4;\n border: 1px solid #841;\n}\n\n/*}}}*/\n/***\n!Header /%==================================================%/\n***/\n/*{{{*/\n.header {\n background: #04b;\n}\n\n.headerShadow {\n color: #000;\n}\n\n.headerShadow a {\n font-weight: normal;\n color: #000;\n}\n\n.headerForeground {\n color: #fff;\n}\n\n.headerForeground a {\n font-weight: normal;\n color: #8cf;\n}\n\n/*}}}*/\n/***\n!General tabs /%=================================================%/\n***/\n/*{{{*/\n\n.tabSelected{\n color: #014;\n background: #eee;\n border-left: 1px solid #ccc;\n border-top: 1px solid #ccc;\n border-right: 1px solid #ccc;\n}\n\n.tabUnselected {\n color: #fff;\n background: #999;\n}\n\n.tabContents {\n color: #014;\n background: #eee;\n border: 1px solid #ccc;\n}\n\n.tabContents .button {\n border: 0;}\n\n/*}}}*/\n/***\n!Sidebar options /%=================================================%/\n~TiddlyLinks and buttons are treated identically in the sidebar and slider panel\n***/\n/*{{{*/\n#sidebar {\n}\n\n#sidebarOptions input {\n border: 1px solid #04b;\n}\n\n#sidebarOptions .sliderPanel {\n background: #8cf;\n}\n\n#sidebarOptions .sliderPanel a {\n border: none;\n color: #04b;\n}\n\n#sidebarOptions .sliderPanel a:hover {\n color: #fff;\n background: #04b;\n}\n\n#sidebarOptions .sliderPanel a:active {\n color: #04b;\n background: #fff;\n}\n/*}}}*/\n/***\n!Message Area /%=================================================%/\n***/\n/*{{{*/\n#messageArea {\n border: 1px solid #841;\n background: #db4;\n color: #014;\n}\n\n#messageArea .button {\n padding: 0.2em 0.2em 0.2em 0.2em;\n color: #014;\n background: #fff;\n}\n\n/*}}}*/\n/***\n!Popup /%=================================================%/\n***/\n/*{{{*/\n.popup {\n background: #18f;\n border: 1px solid #04b;\n}\n\n.popup hr {\n color: #014;\n background: #014;\n border-bottom: 1px;\n}\n\n.popup li.disabled {\n color: #04b;\n}\n\n.popup li a, .popup li a:visited {\n color: #eee;\n border: none;\n}\n\n.popup li a:hover {\n background: #014;\n color: #fff;\n border: none;\n}\n/*}}}*/\n/***\n!Tiddler Display /%=================================================%/\n***/\n/*{{{*/\n.tiddler .defaultCommand {\n font-weight: bold;\n}\n\n.shadow .title {\n color: #866;\n}\n\n.title {\n color: #703;\n}\n\n.subtitle {\n color: #866;\n}\n\n.toolbar {\n color: #04b;\n}\n\n.tagging, .tagged {\n border: 1px solid #eee;\n background-color: #eee;\n}\n\n.selected .tagging, .selected .tagged {\n background-color: #ddd;\n border: 1px solid #bbb;\n}\n\n.tagging .listTitle, .tagged .listTitle {\n color: #014;\n}\n\n.tagging .button, .tagged .button {\n border: none;\n}\n\n.footer {\n color: #ddd;\n}\n\n.selected .footer {\n color: #888;\n}\n\n.sparkline {\n background: #8cf;\n border: 0;\n}\n\n.sparktick {\n background: #014;\n}\n\n.errorButton {\n color: #ff0;\n background: #f00;\n}\n\n.cascade {\n background: #eef;\n color: #aac;\n border: 1px solid #aac;\n}\n\n.imageLink, #displayArea .imageLink {\n background: transparent;\n}\n\n/*}}}*/\n/***\n''The viewer is where the tiddler content is displayed'' /%------------------------------------------------%/\n***/\n/*{{{*/\n\n.viewer .listTitle {list-style-type: none; margin-left: -2em;}\n\n.viewer .button {\n border: 1px solid #db4;\n}\n\n.viewer blockquote {\n border-left: 3px solid #666;\n}\n\n.viewer table {\n border: 2px solid #333;\n}\n\n.viewer th, thead td {\n background: #db4;\n border: 1px solid #666;\n color: #fff;\n}\n\n.viewer td, .viewer tr {\n border: 1px solid #666;\n}\n\n.viewer pre {\n border: 1px solid #fe8;\n background: #ffc;\n}\n\n.viewer code {\n color: #703;\n}\n\n.viewer hr {\n border: 0;\n border-top: dashed 1px #666;\n color: #666;\n}\n\n.highlight, .marked {\n background: #fe8;\n}\n/*}}}*/\n/***\n''The editor replaces the viewer in the tiddler'' /%------------------------------------------------%/\n***/\n/*{{{*/\n.editor input {\n border: 1px solid #04b;\n}\n\n.editor textarea {\n border: 1px solid #04b;\n width: 100%;\n}\n\n.editorFooter {\n color: #aaa;\n}\n\n/*}}}*/
/***\n!Sections in this Tiddler:\n*Generic rules\n**Links styles\n**Link Exceptions\n*Header\n*Main menu\n*Sidebar\n**Sidebar options\n**Sidebar tabs\n*Message area\n*Popup\n*Tabs\n*Tiddler display\n**Viewer\n**Editor\n*Misc. rules\n!Generic Rules /%==============================================%/\n***/\n/*{{{*/\nbody {\n font-size: .75em;\n font-family: arial,helvetica;\n position: relative;\n margin: 0;\n padding: 0;\n}\n\nh1,h2,h3,h4,h5 {\n font-weight: bold;\n text-decoration: none;\n padding-left: 0.4em;\n}\n\nh1 {font-size: 1.35em;}\nh2 {font-size: 1.25em;}\nh3 {font-size: 1.1em;}\nh4 {font-size: 1em;}\nh5 {font-size: .9em;}\n\nhr {\n height: 1px;\n}\n\na{\n text-decoration: none;\n}\n\nol { list-style-type: decimal }\nol ol { list-style-type: lower-alpha }\nol ol ol { list-style-type: lower-roman }\nol ol ol ol { list-style-type: decimal }\nol ol ol ol ol { list-style-type: lower-alpha }\nol ol ol ol ol ol { list-style-type: lower-roman }\nol ol ol ol ol ol ol { list-style-type: decimal }\n/*}}}*/\n/***\n''General Link Styles'' /%-----------------------------------------------------------------------------%/\n***/\n/*{{{*/\n.externalLink {\n text-decoration: underline;\n}\n\n.tiddlyLinkExisting {\n font-weight: bold;\n}\n\n.tiddlyLinkNonExisting {\n font-style: italic;\n}\n\n/* the 'a' is required for IE, otherwise it renders the whole tiddler a bold */\na.tiddlyLinkNonExisting.shadow {\n font-weight: bold;\n}\n/*}}}*/\n/***\n''Exceptions to common link styles'' /%------------------------------------------------------------------%/\n***/\n/*{{{*/\n\n#mainMenu .tiddlyLinkExisting, \n#mainMenu .tiddlyLinkNonExisting,\n#sidebarTabs .tiddlyLinkExisting,\n#sidebarTabs .tiddlyLinkNonExisting{\n font-weight: normal;\n font-style: normal;\n}\n\n/*}}}*/\n/***\n!Header /%==================================================%/\n***/\n/*{{{*/\n\n.header {\n position: relative;\n}\n\n.header a:hover {\n background: transparent;\n}\n\n.headerShadow {\n position: relative;\n padding: 4.5em 0em 1em 1em;\n left: -1px;\n top: -1px;\n}\n\n.headerForeground {\n position: absolute;\n padding: 4.5em 0em 1em 1em;\n left: 0px;\n top: 0px;\n}\n\n.siteTitle {\n font-size: 3em;\n}\n\n.siteSubtitle {\n font-size: 1.2em;\n}\n\n/*}}}*/\n/***\n!Main menu /%==================================================%/\n***/\n/*{{{*/\n#mainMenu {\n position: absolute;\n left: 3px;\n width: 10em;\n text-align: right;\n line-height: 1.6em;\n padding: 1.5em 0.5em 0.5em 0.5em;\n font-size: 1.1em;\n}\n\n/*}}}*/\n/***\n!Sidebar rules /%==================================================%/\n***/\n/*{{{*/\n#sidebar {\n position: absolute;\n right: 3px;\n width: 16em;\n font-size: .9em;\n}\n/*}}}*/\n/***\n''Sidebar options'' /%----------------------------------------------------------------------------------%/\n***/\n/*{{{*/\n#sidebarOptions {\n padding-top: 0.3em;\n}\n\n#sidebarOptions a {\n margin: 0em 0.2em;\n padding: 0.2em 0.3em;\n display: block;\n}\n\n#sidebarOptions input {\n margin: 0.4em 0.5em;\n}\n\n#sidebarOptions .sliderPanel {\n margin-left: 1em;\n padding: 0.5em;\n font-size: .85em;\n}\n\n#sidebarOptions .sliderPanel a {\n font-weight: bold;\n display: inline;\n padding: 0;\n}\n\n#sidebarOptions .sliderPanel input {\n margin: 0 0 .3em 0;\n}\n/*}}}*/\n/***\n''Sidebar tabs'' /%-------------------------------------------------------------------------------------%/\n***/\n/*{{{*/\n\n#sidebarTabs .tabContents {\n width: 15em;\n overflow: hidden;\n}\n\n/*}}}*/\n/***\n!Message area /%==================================================%/\n***/\n/*{{{*/\n#messageArea {\nposition:absolute; top:0; right:0; margin: 0.5em; padding: 0.5em;\n}\n\n*[id='messageArea'] {\nposition:fixed !important; z-index:99;}\n\n.messageToolbar {\ndisplay: block;\ntext-align: right;\n}\n\n#messageArea a{\n text-decoration: none;\n}\n/*}}}*/\n/***\n!Popup /%==================================================%/\n***/\n/*{{{*/\n.popup {\n font-size: .9em;\n padding: 0.2em;\n list-style: none;\n margin: 0;\n}\n\n.popup hr {\n display: block;\n height: 1px;\n width: auto;\n padding: 0;\n margin: 0.2em 0em;\n}\n\n.popup li.disabled {\n padding: 0.2em;\n}\n\n.popup li a{\n display: block;\n padding: 0.2em;\n}\n/*}}}*/\n/***\n!Tabs /%==================================================%/\n***/\n/*{{{*/\n.tabset {\n padding: 1em 0em 0em 0.5em;\n}\n\n.tab {\n margin: 0em 0em 0em 0.25em;\n padding: 2px;\n}\n\n.tabContents {\n padding: 0.5em;\n}\n\n.tabContents ul, .tabContents ol {\n margin: 0;\n padding: 0;\n}\n\n.txtMainTab .tabContents li {\n list-style: none;\n}\n\n.tabContents li.listLink {\n margin-left: .75em;\n}\n/*}}}*/\n/***\n!Tiddler display rules /%==================================================%/\n***/\n/*{{{*/\n#displayArea {\n margin: 1em 17em 0em 14em;\n}\n\n\n.toolbar {\n text-align: right;\n font-size: .9em;\n visibility: hidden;\n}\n\n.selected .toolbar {\n visibility: visible;\n}\n\n.tiddler {\n padding: 1em 1em 0em 1em;\n}\n\n.missing .viewer,.missing .title {\n font-style: italic;\n}\n\n.title {\n font-size: 1.6em;\n font-weight: bold;\n}\n\n.missing .subtitle {\n display: none;\n}\n\n.subtitle {\n font-size: 1.1em;\n}\n\n/* I'm not a fan of how button looks in tiddlers... */\n.tiddler .button {\n padding: 0.2em 0.4em;\n}\n\n.tagging {\nmargin: 0.5em 0.5em 0.5em 0;\nfloat: left;\ndisplay: none;\n}\n\n.isTag .tagging {\ndisplay: block;\n}\n\n.tagged {\nmargin: 0.5em;\nfloat: right;\n}\n\n.tagging, .tagged {\nfont-size: 0.9em;\npadding: 0.25em;\n}\n\n.tagging ul, .tagged ul {\nlist-style: none;margin: 0.25em;\npadding: 0;\n}\n\n.tagClear {\nclear: both;\n}\n\n.footer {\n font-size: .9em;\n}\n\n.footer li {\ndisplay: inline;\n}\n/***\n''The viewer is where the tiddler content is displayed'' /%------------------------------------------------%/\n***/\n/*{{{*/\n* html .viewer pre {\n width: 99%;\n padding: 0 0 1em 0;\n}\n\n.viewer {\n line-height: 1.4em;\n padding-top: 0.5em;\n}\n\n.viewer .button {\n margin: 0em 0.25em;\n padding: 0em 0.25em;\n}\n\n.viewer blockquote {\n line-height: 1.5em;\n padding-left: 0.8em;\n margin-left: 2.5em;\n}\n\n.viewer ul, .viewer ol{\n margin-left: 0.5em;\n padding-left: 1.5em;\n}\n\n.viewer table {\n border-collapse: collapse;\n margin: 0.8em 1.0em;\n}\n\n.viewer th, .viewer td, .viewer tr,.viewer caption{\n padding: 3px;\n}\n\n.viewer pre {\n padding: 0.5em;\n margin-left: 0.5em;\n font-size: 1.2em;\n line-height: 1.4em;\n overflow: auto;\n}\n\n.viewer code {\n font-size: 1.2em;\n line-height: 1.4em;\n}\n/*}}}*/\n/***\n''The editor replaces the viewer in the tiddler'' /%------------------------------------------------%/\n***/\n/*{{{*/\n.editor {\nfont-size: 1.1em;\n}\n\n.editor input, .editor textarea {\n display: block;\n width: 100%;\n font: inherit;\n}\n\n.editorFooter {\n padding: 0.25em 0em;\n font-size: .9em;\n}\n\n.editorFooter .button {\n padding-top: 0px; \n padding-bottom: 0px;\n}\n\n.fieldsetFix {border: 0;\n padding: 0;\n margin: 1px 0px 1px 0px;\n}\n/*}}}*/\n/***\n!Misc rules /%==================================================%/\n***/\n/*{{{*/\n.sparkline {\n line-height: 1em;\n}\n\n.sparktick {\n outline: 0;\n}\n\n.zoomer {\n font-size: 1.1em;\n position: absolute;\n padding: 1em;\n}\n\n.cascade {\n font-size: 1.1em;\n position: absolute;\n overflow: hidden;\n}\n/*}}}*/
/*{{{*/\n\n@media print {\n#mainMenu, #sidebar, #messageArea {display: none !important;}\n#displayArea {margin: 1em 1em 0em 1em;}\n\n\n/* LAYOUT ELEMENTS ========================================================== */\n*\n{\n margin: 0;\n padding: 0;\n}\n\nbody {\n background: #fff;\n color: #000;\n font-size: 6.2pt;\n font-family: "Lucida Grande", "Bitstream Vera Sans", Helvetica, Verdana, Arial, sans-serif;\n}\n\nimg {\n max-width: 2.2in;\n max-height: 4.3in;\n}\n\n#header, #side_container, #storeArea, #copyright, #floater, #messageArea, .save_accesskey, .site_description, #saveTest, .toolbar, .footer\n{\n display: none;\n}\n\n#tiddlerDisplay, #displayArea\n{\n display: inline;\n}\n\n.tiddler {\n margin: 0 0 2em 0;\n border-top: 1px solid #000;\n page-break-before: always;\n}\n\n.tiddler:first-child {\n page-break-before: avoid;\n}\n\n.title {\n font-size: 1.6em;\n font-weight: bold;\n margin-bottom: .3em;\n padding: .2em 0;\n border-bottom: 1px dotted #000;\n}\n\np, blockquote, ul, li, ol, dt, dd, dl, table\n{\n margin: 0 0 .3em 0;\n}\n\nh1, h2, h3, h4, h5, h6\n{\n margin: .2em 0;\n} \n\nh1\n{\n font-size: 1.5em;\n}\n\nh2\n{\n font-size: 1.3em;\n}\n\nh3\n{\n font-size: 1.25em;\n}\n\nh4\n{\n font-size: 1.15em;\n}\n\nh5\n{\n font-size: 1.1em;\n}\n\nblockquote\n{\n margin: .6em;\n padding-left: .6em;\n border-left: 1px solid #ccc;\n}\n\nul\n{\n list-style-type: circle;\n}\n\nli\n{\n margin: .1em 0 .1em 2em;\n line-height: 1.4em; \n}\n\ntable\n{\n border-collapse: collapse;\n font-size: 1em;\n}\n\ntd, th\n{\n border: 1px solid #999;\n padding: .2em;\n}\n\nhr {\n border: none;\n border-top: dotted 1px #777;\n height: 1px;\n color: #777;\n margin: .6em 0;\n}\n}\n/*}}}*/
/***\n''Name:'' TWUpdate\n''Author:'' Tom Otvos\n''Version:'' 1.0\n\n***/\n//{{{\n\nversion.extensions.twupdate = {major: 1, minor: 0, revision: 0, date: new Date(2006,4,23,0,0,0,0), source: "http://www.dcubed.ca/"};\n\nconfig.macros.twupdate = { \n label: "update",\n sourceUrl: "http://www.tiddlywiki.com/empty.html", \n lingo: {\n prompt: "Update this TiddlyWiki from TiddlyWiki.com", \n warning: "Are you sure you want to update this document with the latest version of TiddlyWiki (and do you know that all your plugins are compatible)?\sn\snIf you want to continue, your document will first be saved with a backup.",\n success: "Update was successful. Click on 'OK' to reload the document",\n errNoHttp: "Unable to allocate an HTTP request object for the update",\n errIncompatible: "This version of TiddlyWiki cannot be updated by this plugin. Sorry.",\n progressLoading: "Getting update from TiddlyWiki.com...",\n progressLoadSuccess: "File successfully loaded",\n progressLoadFailure: "File was not loaded successfully (%0)",\n progressMerging: "Merging with existing document..."\n }\n}\n\nconfig.macros.twupdate.handler = function(place,macroName,params)\n{\n if(!readOnly) {\n var label = params[0] ? params[0] : this.label;\n createTiddlyButton(place, label, this.lingo.prompt, this.onClick, null, null, null);\n }\n}\n\nconfig.macros.twupdate.onClick = function(e)\n{\n if (version.major != 2 || version.minor != 0 || version.revision < 7) {\n alert(config.macros.twupdate.lingo.errIncompatible);\n return;\n }\n \n if (!confirm(config.macros.twupdate.lingo.warning)) return;\n\n try {\n // force a save with backup\n var saveBackups = config.options.chkSaveBackups;\n config.options.chkSaveBackups = true;\n saveChanges();\n config.options.chkSaveBackups = saveBackups;\n \n var ajax = new AjaxHelper();\n displayMessage(config.macros.twupdate.lingo.progressLoading);\n ajax.getText(config.macros.twupdate.sourceUrl, config.macros.twupdate.performUpdate); \n }\n catch (e) {\n alert(e);\n }\n\n return false;\n}\n\n// Courtesy of http://www.worldtimzone.com/res/encode/...\nfunction utf8(wide) {\n var c, s;\n var enc = "";\n var i = 0;\n while(i<wide.length) {\n c= wide.charCodeAt(i++);\n // handle UTF-16 surrogates\n if (c>=0xDC00 && c<0xE000) continue;\n if (c>=0xD800 && c<0xDC00) {\n if (i>=wide.length) continue;\n s= wide.charCodeAt(i++);\n if (s<0xDC00 || c>=0xDE00) continue;\n c= ((c-0xD800)<<10)+(s-0xDC00)+0x10000;\n }\n // output value\n if (c<0x80) enc += String.fromCharCode(c);\n else if (c<0x800) enc += String.fromCharCode(0xC0+(c>>6),0x80+(c&0x3F));\n else if (c<0x10000) enc += String.fromCharCode(0xE0+(c>>12),0x80+(c>>6&0x3F),0x80+(c&0x3F));\n else enc += String.fromCharCode(0xF0+(c>>18),0x80+(c>>12&0x3F),0x80+(c>>6&0x3F),0x80+(c&0x3F));\n }\n return enc;\n}\n\nconfig.macros.twupdate.performUpdate = function(emptyHtml, status, statusText)\n{\n // note that this is begin called from a callback from an event handler, so\n // "this" is most definitely not defined!\n \n if (status == 200)\n displayMessage(config.macros.twupdate.lingo.progressLoadSuccess);\n else {\n displayMessage(config.macros.twupdate.lingo.progressLoadFailure.format([statusText]));\n return;\n }\n displayMessage(config.macros.twupdate.lingo.progressMerging);\n \n // very important...convert the response to UTF-8 to be fully TW-compatible\n var re = /[^\su0000-\su007F]/g ;\n emptyHtml = emptyHtml.replace(re, function($0) {return(utf8($0));});\n \n // the bulk of this is cribbed from saveChanges()...\n var originalPath = document.location.toString();\n // Check we were loaded from a file URL\n if (originalPath.substr(0,5) != "file:") {\n alert(config.messages.notFileUrlError);\n if (store.tiddlerExists(config.messages.saveInstructions))\n displayTiddler(null,config.messages.saveInstructions);\n return;\n }\n var localPath = getLocalPath(originalPath);\n\n // Locate the storeArea div's\n var posOpeningDiv = emptyHtml.indexOf(startSaveArea);\n var posClosingDiv = emptyHtml.lastIndexOf(endSaveArea);\n if ((posOpeningDiv == -1) || (posClosingDiv == -1)) {\n alert(config.messages.invalidFileError.format(['empty.html']));\n return;\n }\n\n // Save new file\n var revised = emptyHtml.substr(0,posOpeningDiv + startSaveArea.length) + \n convertUnicodeToUTF8(allTiddlersAsHtml()) + "\sn\st\st" +\n emptyHtml.substr(posClosingDiv);\n var newSiteTitle = convertUnicodeToUTF8((wikifyPlain("SiteTitle") + " - " + wikifyPlain("SiteSubtitle")).htmlEncode());\n revised = revised.replaceChunk("<title"+">","</title"+">"," " + newSiteTitle + " ");\n revised = revised.replaceChunk("<!--PRE-HEAD-START--"+">","<!--PRE-HEAD-END--"+">","\sn" + store.getTiddlerText("MarkupPreHead","") + "\sn");\n revised = revised.replaceChunk("<!--POST-HEAD-START--"+">","<!--POST-HEAD-END--"+">","\sn" + store.getTiddlerText("MarkupPostHead","") + "\sn");\n revised = revised.replaceChunk("<!--PRE-BODY-START--"+">","<!--PRE-BODY-END--"+">","\sn" + store.getTiddlerText("MarkupPreBody","") + "\sn");\n revised = revised.replaceChunk("<!--POST-BODY-START--"+">","<!--POST-BODY-END--"+">","\sn" + store.getTiddlerText("MarkupPostBody","") + "\sn");\n var save = saveFile(localPath, revised);\n if (save) {\n displayMessage(config.messages.mainSaved, "file://" + localPath);\n store.setDirty(false);\n alert(config.macros.twupdate.lingo.success);\n document.location.reload();\n }\n else\n alert(config.messages.mainFailed);\n}\n\nfunction AjaxHelper()\n{\n this.http = null;\n \n try\n {\n this.http = new XMLHttpRequest()\n }\n \n catch(e)\n {\n // if we don't get an internal object, try allocating it using ActiveX, with successive\n // fallbacks to earlier MSXML versions as necessary\n try\n {\n this.http = new ActiveXObject("Msxml2.XMLHTTP.4.0")\n } \n catch(e) \n {\n try\n {\n this.http = new ActiveXObject("MSXML2.XMLHTTP")\n } \n catch(e) \n {\n try\n {\n this.http = new ActiveXObject("Microsoft.XMLHTTP")\n } \n catch(e) \n {\n this.http = null\n }\n }\n }\n }\n \n if (!this.http) throw 'Unable to allocate an HTTP request object';\n}\n\nAjaxHelper.prototype.getText = function(url, callback, async, force)\n{\n if (!this.http) return;\n if (async == undefined) async = true;\n if (force == undefined) force = false;\n // ??? right now, we are not handling "forced" requests\n this._request("GET", url, callback, async, true, false);\n}\n\nAjaxHelper.prototype.getXML = function(url, callback, async, force)\n{\n if (!this.http) return;\n if (async == undefined) async = true;\n if (force == undefined) force = false;\n // ??? right now, we are not handling "forced" requests\n this._request("GET", url, callback, async, true, true);\n}\n\nAjaxHelper.prototype.getHead = function(url, callback, async, force)\n{\n if (!this.http) return;\n if (async == undefined) async = true;\n if (force == undefined) force = false;\n // ??? right now, we are not handling "forced" requests\n this._request("HEAD", url, callback, async, false, false);\n}\n\nAjaxHelper.prototype.abort = function()\n{\n if (this.http) this.http.abort();\n}\n\nAjaxHelper.prototype.setRequestHeader = function(name, value)\n{\n if (this.http) this.http.setRequestHeader(name, value);\n}\n\nAjaxHelper.prototype._request = function(method, url, callback, async, hasResponse, hasResponseXML)\n{\n if (!this.http) return;\n \n // get reference to request object so we can use it in closure\n var xmlHttp = this.http, helper = this;\n xmlHttp.onreadystatechange = function()\n {\n if (!async) return;\n if (xmlHttp.readyState == 4)\n callback((hasResponse ? (hasResponseXML ? xmlHttp.responseXML : xmlHttp.responseText) : null), xmlHttp.status, xmlHttp.statusText, helper._parsedResponseHeaders());\n }\n \n try {\n // need some cross-domain privileges for Firefox\n try {\n netscape.security.PrivilegeManager.enablePrivilege("UniversalBrowserRead");\n } \n catch (e) \n {\n }\n \n xmlHttp.open(method, url, async);\n xmlHttp.send(null);\n if (!async) callback((hasResponse ? (hasResponseXML ? xmlHttp.responseXML : xmlHttp.responseText) : null), xmlHttp.status, xmlHttp.statusText, this._parsedResponseHeaders());\n }\n \n catch (e)\n {\n alert(e);\n }\n}\n\nAjaxHelper.prototype._parsedResponseHeaders = function()\n{\n if (this.http) {\n var headersArray = new Array();\n var headers = this.http.getAllResponseHeaders().split("\sn");\n for (var i = 0; i < headers.length; i++) {\n var h = headers[i].trim();\n if (h.length == 0) continue;\n // value can have ':' so do not use split here!\n var sep = h.indexOf(':');\n headersArray[h.substring(0, sep).trim()] = h.substr(sep + 1).trim();\n }\n return headersArray;\n }\n else\n return null;\n}\n\n//}}}\n
/***\n|Name|TabEditPlugin|\n|Created by|SaqImtiaz|\n|Location|http://lewcid.googlepages.com/lewcid.html#TabEditPlugin|\n|Version|0.32|\n|Requires|~TW2.x|\n\n!Description\nMakes editing of tabs easier.\n\n!Usage\n*Double click a tab to edit the source tiddler\n*Double click outside the tabset to edit the containing tiddler. \n\n!Demo\nTestTabs\n\n!History\n*28-04-06, v0.32 - fixed previous bug fix!\n*27-04-06, v0.31 - fixed conflicts with tabs created using PartTiddler.\n*26-04-06, v0.30 - first public release\n\n***/\n\n//{{{\n\n//tab on double click event handler\nStory.prototype.onTabDblClick = function(e){\n if (!e) var e = window.event;\n var theTarget = resolveTarget(e);\n var title= this.getAttribute("source");\n if ((version.extensions.PartTiddlerPlugin)&&(title.indexOf("/")!=-1))\n {if (!oldFetchTiddler.call(this, [title]))\n {return false;}} \n story.displayTiddler(theTarget,title,2,false,null)\n e.cancelBubble = true;\n if (e.stopPropagation) e.stopPropagation();\n return false;\n }\n\nconfig.macros.tabs.switchTab = function(tabset,tab)\n{\n var cookie = tabset.getAttribute("cookie");\n var theTab = null\n var nodes = tabset.childNodes;\n for(var t=0; t<nodes.length; t++)\n if(nodes[t].getAttribute && nodes[t].getAttribute("tab") == tab)\n {\n theTab = nodes[t];\n theTab.className = "tab tabSelected";\n }\n else\n nodes[t].className = "tab tabUnselected"\n if(theTab)\n {\n if(tabset.nextSibling && tabset.nextSibling.className == "tabContents")\n tabset.parentNode.removeChild(tabset.nextSibling);\n var tabContent = createTiddlyElement(null,"div",null,"tabContents",null);\n tabset.parentNode.insertBefore(tabContent,tabset.nextSibling);\n var contentTitle = theTab.getAttribute("content");\n\n //set source attribute equal to title of tiddler displayed in tab\n tabContent.setAttribute("source",contentTitle);\n //add dbl click event\n tabContent.ondblclick = story.onTabDblClick;\n\n wikify(store.getTiddlerText(contentTitle),tabContent,null,store.getTiddler(contentTitle));\n if(cookie)\n {\n config.options[cookie] = tab;\n saveOptionCookie(cookie);\n }\n }\n}\n\n//}}}
<<timeline better:true maxDays:14 maxEntries:18>>
''Summary of Michael Riconosciuto's Information''\nPresented in //Terrorism Cover Up in America//\n\n By Ted Gunderson\n http://educate-yourself.org/tg/TCUriconosciutosummary.shtml\n\n----\n\n<<<\n Sept. 30, 2003\n\n [[Michael Riconosciuto]], an inmate at the FCI in Allenwood, Pennsylvania, who has contacts in the Middle East, informed this reporter that in March 2001 (well prior to September 11), he informed the FBI of the identity of the organizer of certain terrorist activities in the United States, the identities of those who furnished false identification to the terrorists, an aviation company with which the terrorists were dealing, information concerning the smuggling of shoulder-fired missiles into the United States, and other sensitive matters. The [[FBI]] agent who interviewed Riconosciuto later admitted that he did not follow up on any of this information. According to Riconosciuto, if properly investigated, the events of [[9-11]] may not have occurred. Riconosciuto also made a confidential source inside the terrorist group available to the FBI. When interviewed by the FBI, this person reportedly was threatened with prosecution and deported. Riconosciuto claimed that the same FBI agent later told him that he (Riconosciuto) was wasting his time, that he was a [[conspiracy theorist]] seeking publicity, that he did not investigate Riconosciuto's information, and threatened him with prosecution\n\n!Details\n\n Michael J. Riconosciuto, who has been in federal custody since 1991, furnished the following information to Ted Gunderson on January 3, 4, and 5, 2003:\n\n 1. He has been active in the intelligence community for years, and has a number of contacts in the Middle East, including individuals who have been, or are now actively involved, with [[al-Qaeda]], the [[Islamic Jihad Committee]], and the [[International Islamic Front]]\n\n 2. In February 2000, he learned that the Royal Canadian Mounted Police ([[RCMP]]) were interested in interviewing him by telephone. At the time, Riconosciuto was at the FCI in Coleman, Florida. As soon as he agreed to the interview, he was told by a Bureau of Prisons ([[BOP]]) staff member that he should not have agreed to the interview, was threatened by staff and other inmates, and told not to cooperate with the RCMP and a homicide detective from Hercules, California, who was working with the RCMP. The subject of the interview related to the murder of one of Riconosciuto's friends, and national security issues in the U.S and Canada. The BOP staff threatened him with administrative reprimands.\n\n 3. In spite of the threats, Riconosciuto agreed to the interview on February 7, 2000. Within one hour following the interview, he was charged with a disciplinary infraction.\n\n 4. This infraction was expunged at a BOP hearing on February 11,2000.\n\n 5. Within an hour of this hearing, the FBI charged Riconosciuto with solicitation of murder; the charge relating to the expunged incident.\n\n 6. Because of this allegation, Riconosciuto was placed in solitary confinement for several months.\n\n 7. Upon his return to the general prison population, Riconosciuto was transferred to the FCI Allenwood, Pennsylvania, with the reputation of being a "threat" to BOP staff members.\n\n 8. On February 5, 2001, Riconosciuto wrote a certified letter ([[Exhibit A|http://educate-yourself.org/tg/TCUreportexbA5feb01.shtml]]) to his attorney, Don Bailey, that he had contact with someone in an Islamic group called "[[The Base]]" ([[al-Qaeda]]), and that said group was currently in preparation for an attack in the United States, but would not divulge specific details unless the U.S. Government granted immunity from prosecution to his sources. In this letter, Riconosciuto also stated that he had an inside source who could furnish information concerning the handling of false IDs and passports for the group.\n\n 9. On February 13, 2001, Riconosciuto sent a certified letter ([[Exhibit B|http://educate-yourself.org/tg/TCUreportexbB13feb01.shtml]]) to Congressman [[Bryan Baird]] (D - WA), in an effort to expedite the reporting of his information to the appropriate authorities. Note in the referenced exhibit the urgency of the matter according to Riconosciuto, and his identification of sources (one of which has been intentionally blanked by this reporter)\n\n 10. On February 19, 2001, Louis Buffardi, a second attorney of Riconosciuto's, wrote to Secretary of State [[Colin Powell]], with a cc to Attorney General [[John Ashcroft]] ([[Exhibit C|http://educate-yourself.org/tg/TCUbufarditocolinpowell19feb01.shtml]]), to the effect that he had a client with information concerning an imminent terrorist attack in the United States, and Buffardi asked that someone other than the FBI obtain the details from his client.\n\n 11. On February 20, 2001, Riconosciuto filed BOP Form 148 (Exhibit D - not linked), for use of a private telephone to handle sensitive conversations relating to matters mentioned in 8, 9, and 10, above. Riconosciuto informed this reporter that among his reasons for this request was also the fact that he had a 30-hour "window" relating to the shipment of 37 Soviet-made missiles (StreIa-3 and Igla-9) that had been shipped from Bulgaria to Colombia, and thence, to Canada, destined for [[Thabet Aviation]] in Quebec City. He further informed this reporter that attorney Buffardi passed this information to the FBI and U.S. Attorney in Chicago, Illinois.\n\n 12. Once he received his private telephone, Riconosciuto told this reporter that he had conversations concerning the afore-mentioned topics with, among others, [[John O'Neill]], former FBI terrorist expert in charge of security for the World Trade Center. Others with whom Riconosciuto talked included:\n\n 13. On an unrecalled day in March 2001, Riconosciuto was visited by Special Agent (SA) [[Keith Cutri]] of the Williamsport, Pennsylvania, FBI resident agency.\n\n 14. Riconosciuto furnished SA Cutri with the identification of an individual in New Jersey (unidentified herein to eliminate damage or complications to future official investigations) who:\n\n a. Was coordinating forthcoming terrorist attacks on the United States.\n b. Had information on the movement of Soviet-made shoulder-fired missiles into the United States.\n c. Was coordinating forthcoming skyjackings.\n d. Was coordinating bombings and espionage.\n e. Knew the identities of "sleepers" in the United States and overseas.\n\n 15. Riconosciuto also furnished SA Cutri with information on a false ID ring in Montreal, Canada, and in New Jersey, and could furnish the exact false ID of 30 terrorists who had been chosen for actions inside the United States.\n\n 16. Riconosciuto further told SA Cutri that the 37 Soviet-made missiles were being handled through Thabet Aviation in Quebec City, Canada, which also brokered old but serviceable aircraft (Swearingtons, DC-9s, 747s, and high-performance military) to be used in drug-running and future terrorist attacks in a so-called "40 minute" war scenario by using aircraft as flying "missiles".\n\n 17. Riconosciuto further informed SA Cutri that terrorists were taking flight training in various types of aircraft brokered by Thabet, and if given immunity for himself and his contacts, he would provide specific information where said training was taking place and the identities of the students involved.\n\n 18. [blacked out area for the sanitized public report]\n\n 19. In his discussion with SA Cutri, other than the immunity request, Riconosciuto attached no other conditions to his possible future cooperation with the FBI.\n\n 20. [blacked out ]\n\n 21. In the period between his March 2001 interview by SA Cutri and September 13, 2001, Riconosciuto heard nothing from the FBI or any other federal agency.\n\n 22. Riconosciuto was shocked by what happened on September 11, 2001, especially in view of the information he furnished to SA Cutri in March. In his opinion, if properly handled, 9-11 would not have happened.\n\n 23. On September 13, 2001, SA Cutri and a second, unidentified FBI agent interviewed Riconosciuto in the Legal Room of [[FCI Allenwood]]. In spite of what had just taken place in New York and Washington on September 11, and the information Riconosciuto had already volunteered in March, SA Cutri posed the following questions and accusations to Michael Riconosciuto:\n\n a. Wanted to know why Riconosciuto was bothering the FBI and wasting its time.\n b. Accused Riconosciuto of seeking publicity.\n c. Accused Riconosciuto of being "anti-FBI' and "anti-government".\n d. Called Riconosciuto a "conspiracy theorist".\n e. Called Riconosciuto a "know-it-all",\n f. Called Riconosciuto a "hoaxer" and threatened him with prosecution.\n g. Stated that he discontinued inquiry into the information Riconosciuto gave him in March, 2001 because information Riconosciuto gave him about a staff member at FCI Coleman was untrue.\n h. Stated that Riconosciuto was still under investigation because of threats he made against a staff member at Coleman. Riconosciuto took this as a threat.\n\n 24. In view of 23, above, Riconosciuto stated that he did not wish to continue this interview without the presence of his counsel, to which SA Cutri replied that as a prisoner, he did not have an absolute right to counsel, which Riconosciuto interpreted as another threat.\n\n 26. [blacked out ]\n\n 27. [blacked out]\n\n 28. In the summer of 2002, Riconosciuto secured the assistance of Senator [[George Allen]] (R- VA) in an attempt to nail down the date in March 2001 on which he was interviewed for the first time by SA Cutri. Attached as Exhibit F (not linked) is a copy of the FBI's official response. Note that while it confirms the September 13, 2001 interview, it "dances" around specific dates of any other interviews.\n\n 29. In view of the above, on September 23, 2002, this reporter wrote a letter (Exhibit G - not linked) to Senator Allen, asking him to contact the FBI to determine the exact date that Riconosciuto was interviewed in March 2001, and whether or not this interview took place as a result of attorney Buffardi's letter to Secretary of State Powell.\n\n 30. According to Riconosciuto as well as an independent source, following the letter referenced above, and without warrants, the FBI seized the computers and other items from persons who were in contact with Riconosciuto, but who are not professionally knowledgeable about "terrorism". The FBI also demanded all letters, documents, correspondence, books, etc., and also inquired about any "Arab" contacts of Riconosciuto's about whom they might be knowledgeable. They were also told that Riconosciuto and Ted Gunderson were making irresponsible statements about the terrorism "issue" and that any help given to Riconosciuto or Gunderson might have criminal consequences.\n\n 31. It is this reporter's professional opinion that the possible purpose of such raids and seizures are part of a campaign to eliminate any trace or proof of official knowledge of the type claimed by Riconosciuto, with specific reference to his interview by SA Cutri in March 2001. This view is reinforced by President Bush's recent "go-ahead" to the formation of an official board of inquiry into the failings of U.S. intelligence that allowed 9-11 to happen.\n<<<
| !To get | !Type this |\n| ''Bold'' | {{{''Bold''}}} |\n| ==Strikethrough== | {{{==Strikethrough==}}} |\n| __Underline__ | {{{__Underline__}}} (that's two underline characters) |\n| //Italic// | {{{//Italic//}}} |\n| Superscript: 2^^3^^=8 | {{{2^^3^^=8}}} |\n| Subscript: a~~ij~~ = -a~~ji~~ | {{{a~~ij~~ = -a~~ji~~}}} |\n| @@highlight@@ | {{{@@highlight@@}}} |\n\n*You can also change many other CSS attributes by adding arguments to the highlight command. For example, you can change the text color to @@color:red;red@@ or give it a background-color of @@background-color:#0000FF;color:white;blue@@.\n{{{\n@@CSS attributes separated by semicolons;text@@\n}}}\n*Finally, you can add new CSS classes to the Tiddlywiki so that you can style a number of items with the same CSS formatting. Simply add the new class to the StyleSheet [[ShadowTiddler|ShadowTiddlers]], such as:\n{{{\n.moveover{\nmargin-left:120px;\n}\n}}}\nThen, when you want to use that CSS class, use the following formatting:\n{{{\n{{classname{text to be formatted}}}\n}}}\n{{moveover{So, for example, this paragraph has been formatted using the moveover CSS class.}}}\n\n!!Making Lists\nLists are one of the easiest things to do in TiddlyWiki, and that's saying a lot. Put an asterisk (*) at the beginning of any line you want added to a bulleted list. If you use two or three asterisks, you'll create second and third level bullets. Like this:\n\n*Entry One\n**Sub-entry A\n***Sub-sub-entry i\n***Sub-sub-entry ii\n**Sub-entry B\n*Entry Two\n*Entry Three\n\nHere's the code for the above list:\n\n{{{\n*Entry One\n**Sub-entry A\n***Sub-sub-entry i\n***Sub-sub-entry ii\n**Sub-entry B\n*Entry Two\n*Entry Three\n}}}\n\nNumbered lists are pretty easy too: Just use number signs (#'s) instead of asterisks:\n\n#Entry One\n##Sub-entry A\n###Sub-sub-entry i\n###Sub-sub-entry ii\n##Sub-entry B\n#Entry Two\n#Entry Three\n\nAnd, once again, here's the code:\n\n{{{\n#Entry One\n##Sub-entry A\n###Sub-sub-entry i\n###Sub-sub-entry ii\n##Sub-entry B\n#Entry Two\n#Entry Three\n}}}\n\n!!Gradients\n\nThe gradient macro allows you to use gradients in your TiddlyWikis without resorting to the use of images. You can pick any number of colors and also select whether the gradient will move vertically or horizontally.\n\n''Code''\nThe generic usage looks like:\n{{{\n<<gradient vert/horiz colors>>text>>\n}}}\n\nTwo examples:\n{{{\n<<gradient vert #ffff00 #0000ff #000000 #00ffff>>color:white;text-align:center;four colors vertically>>\n<<gradient horiz #0000ff #000000 #00ffff>>color:white;text-align:center;three colors horizontally>>\n}}}\n\n''Execution''\n<<gradient vert #ffff00 #0000ff #000000 #00ffff>>color:white;text-align:center;four colors vertically>>\n<<gradient horiz #0000ff #000000 #00ffff>>color:white;text-align:center;three colors horizontally>>\n\n!!Day / Date / Time Formatting\nSeveral [[Macros]] including the TodayMacro take a DateFormatString as an optional argument. This string can be a combination of ordinary text, with some special characters that get substituted by parts of the date:\n* {{{DDD}}} - day of week in full (eg, "Monday")\n* {{{ddd}}} - short day of week (eg, "Mon")\n* {{{DD}}} - day of month\n* {{{0DD}}} - adds a leading zero\n* {{{DDth}}} - adds a suffix\n* {{{WW}}} - ISO-8601 week number of year\n* {{{0WW}}} - adds a leading zero\n* {{{MMM}}} - month in full (eg, "July")\n* {{{mmm}}} - short month (eg, "Jul")\n* {{{MM}}} - month number\n* {{{0MM}}} - adds leading zero\n* {{{YYYY}}} - full year\n* {{{YY}}} - two digit year\n* {{{wYYYY}}} - full year with respect to week number\n* {{{wYY}}} two digit year with respect to week number\n* {{{hh}}} - hours\n* {{{0hh}}} - adds a leading zero\n* {{{hh12}}} - hours in 12 hour clock\n* {{{0hh12}}} - hours in 12 hour clock with leading zero\n* {{{mm}}} - minutes\n* {{{0mm}}} - minutes with leading zero\n* {{{ss}}} - seconds\n* {{{0ss}}} - seconds with leading zero\n* {{{am}}} or {{{pm}}} - lower case AM/PM indicator\n* {{{AM}}} or {{{PM}}} - upper case AM/PM indicator\n
!TiddlyWiki Sites / Plugins\n*[[TiddlyWiki|http://www.tiddlywiki.com/]]\n*[[TiddlySpot|http://tiddlyspot.com/]]\n*[[LewcidTW|http://lewcid.googlepages.com/lewcid.html]]\n*[[Abego Software|http://tiddlywiki.abego-software.de/]]\n*[[BidiXTW|http://tiddlywiki.bidix.info/]]\n*[[MonkeyPirate TW|http://mptw.tiddlyspot.com/]]\n*[[TiddlyTools|http://www.tiddlytools.com/]]\n*[[Tagged Plugins at Del.icio.us|http://del.icio.us/tag/TiddlyWikiPlugin]]\n*[[TiddlyWikiPlugin's Del.icio.us Acct|http://del.icio.us/TiddlyWikiPlugin]]\n*[[ZiddlyWiki|http://ziddlywiki.org/]] - requires Zope\n*[[TiddlyWiki Remote|http://phiffer.org/tiddly/]]\n*[[Qwiki Web|http://www.personal.psu.edu/staff/a/c/ach12/tiddlywiki/]]\n*[[TagglyWiki|http://informationality.com/tagglywiki/tagglywiki.html]]\n*[[GTDTagglyWiki|http://informationality.com/gtdtagglywiki/gtd_tagglywiki.html]]\n*[[TiddlyTagWiki|http://www.digitaldimsum.co.uk/]]\n*[[MyWiki|http://aasted.org/wiki/]]\n*[[PHPTiddlyWiki|http://www.patrickcurry.com/tiddly/]]\n*[[DirtyWaterWiki|http://www.dirtywaterdog.com/wiki.html]]\n*[[YATWA|http://www.rumsby.org/wiki/yatwa.html]]\n*[[GTDTiddlyWiki|http://shared.snapgrid.com/gtd_tiddlywiki.html]]\n*[[ServerSideWiki|http://www.serversidewiki.com/]]\n*[[TiddlyWiki-SE (Student Edition)|http://15black.bluedepot.com/twtests/tiddlywikise.htm]]\n*[[TiddlyWiki Macros|http://tiddlywikimacros.objectis.net/wiki/]]\n*[[d3|http://www.dcubed.ca/]]\n*[[TiddlyWiki Tips|http://tiddlywikitips.com/]]\n*[[Russ Herman's WikiNotes|http://people.uncw.edu/hermanr/Wiki/WikiNotes.html]]\n*[[TiddlyWiki Tutorial|http://www.blogjones.com/TiddlyWikiTutorial.html]]\n*[[TiddlyWiki Google Group|http://groups.google.com/group/TiddlyWiki?lnk=li]]\n*[[WikiBar for TiddlyWiki 2.0.0 (beta 5)|http://efms.emome.net/Web/Map/tiddlywiki/wikibar_demo_2.html]]\n*[[ccTiddly|http://sourceforge.net/projects/cctiddly/]]\n
*[[Photo of Tim Osman and Zbigniew Brzezinski|http://valis.gnn.tv/blogs/13924/Photo_Zbigniew_Brzezinski_Tim_Osman]]\n*[[When Osama Bin Ladin Was Tim Osman|http://www.orlingrabbe.com/binladin_timosman.htm]]\n\n----\n\nWritten By [[Michael Riconosciuto]]\n\nhttp://educate-yourself.org/tg/TCUreportexbA5feb01.shtml\nPosted Sept. 27, 2003\n<<<\n2/5/2001\n\nDon,\n\nI have written to the editor of //Insight// magazine to request a copy of the [[Wackenhut]] letter, and the taped telephone conversation transcript. The Wackenhut letter makes reference to [[Dr. Harry Fair]], describing me as a potential national resource because of certain of my technical abilities. Dr. Fair is the former head of tactical technology research for [[DARPA]]. At the time Dr. Fair made this characterization of me, he was in this position. This is a very strong statement for a govt. agency department head to go on record with. It is also significant that the govt. prevented this type of information from being in front of the jury in my case! The motion in liminal filed by the govt, and granted by the judge, contains some of the most bizarre legal reasoning I have ever encountered. The taped conversation was a telephone call I had with an FBI agent to make a pretrial proffer. One of the significant things about my pretrial proffer is that every single detail of it turned out to be true. The only fault in its accuracy is that my proffer was an understatement. Even as such, the US Attorney in charge of drug prosecutions stated that my pretrial proffer was, "a lot of garbage and delusional"! The US Attorney in charge of drug prosecutions actually testified at my trial, so these remarks are part of the actual trial record. My detailed and specific proffer was given almost five years prior to some of the parties I named were indicted on the same charges I outlined in my proffer.\n\nThe material contained in my pretrial proffer (the Abell/Cali cartel connection), had it been acted on in a timely manner by the govt., would have led to the interdiction of over 200 tons of cocaine. Most of the bad acts charged in the indictment against Abbell et. al., occurred a significant time after my original proffer. A question that needs to be addressed is the legality of the US Attorney interfering with my proffer.\n\nTo facilitate my pretrial proffer, I did the following:\n\n 1) I had [[Ted Gunderson]] as an investigator to help independently corroborate key points of my proffer.\n\n 2) I had [[Alan Boyak]], an attorney and former DEA agent, prepare the pretrial proffer. Alan also had direct knowledge of some of the key points in my proffer because he had worked cases against some of the targets when he was a DEA agent.\n\n 3) The head of the intelligence unit of the Tampa Bay Fla. Police Dept. offered to be the intermediary for the deal.\n\nThe govt. reacted to my proffer by:\n\n 1) Threatening Ted with arrest and banning him from visiting me in the county jail before and during my trial.\n\n 2) Refusing to allow Alan Boyak to attend any of the pretrial proffer meetings with my other attorneys.\n\n 3) Formally demanding that the Tampa Bay P.D. refrain from interfering with a case outside of their jurisdiction.\n\n 4) Filed a motion with the court for 4141 and 4142 competency hearings. This govt. motion questioning my competency was based in part on the govt's stated position that my proffer was delusional.\n\n 5) The AUSA prosecuting my case flew to Los Angeles from Seattle and presented [[Robert Booth Nichols]] with a copy of my pretrial proffer where I had named Nichols and his associates as targets.\n\nI would have been declared incompetent had not the series of articles appeared in the San Francisco Chronicle outlining the bio warfare projects at the Wackenhut /Cabezon joint venture. My claim to have been involved in bio warfare work was cited, by the govt, in the motion for the competency hearing These clearly documented my claim concerning bio warfare work. When the forensic evaluation was sent to the court, it established that "...some of my most unlikely sounding claims turned out to be true upon checking with collateral sources. The govt. response was that so what if it is true, it is not relevant to their case in chief which is a drug case.\n\nMy proffer was never reconsidered by the govt after the determination of my competency. The fact of the matter is that I have a solid established record of reliability in the counterintelligence field. This is clearly documented in my central file. The US Attorney handling my pretrial proffer certainly had this information available to him at the time. The glaring question is why did the AUSA reveal the details of my pretrial proffer to potential targets!?\n\nAs I have stated to you in past letters,and telephone calls, I have been attempting to proffer against Nichols and his crew. The DOJ/BOP [Department of Justice/Bureau of Prisons] has consistently interfered with all of my attempts in this proffer. I have stated that I need you to facilitate my communication with other parties that have direct knowledge against Nichols et. al.\n\nThings have now come to a head! I now have contact with an operative that is in an Arabic group known as [[The Base]]. They are presently engaged in preparation for a major attack in the US. [..blacked out words..] currently represents the [[Abuhouran]] brothers, two of the brothers are incarcerated in the US. The third is a fugitive facing 15 years jail time in the US. We have an insider to this group that handles fake ID and passports for the group's operations. I also have contact with one of the parties that supplies explosives materials to this group. I am deliberately keeping myself with a paucity of specific details until the govt issues an immunity agreement with my contacts. If the govt will not issue the immunity agreement, no more details of these ongoing activities will be forthcoming from anybody. My bonafides are:\n\n 1) I have family members in the [..blacked out..] leadership (..blacked out..) a Christian militia group\n\n 2) Thirty-four days before the two US Embassy bombings in East Africa happened, I notified the FBI in Miami! Two days before these bombings occurred, I made an emergency request of BOP staff at FCI Coleman to make an overseas telephone call to [[ECOMAG]] security headquarters to warn African officials. The BOP categorically turned me down on this call. I have the documentation on all of this.\n\n 3) In the 1980's, [[Ted Gunderson]] , myself, and [[Ralph Olberg]] were involved in negotiations with the Afghan Mujahadeen on behalf of the US govt. Ted will verify that we had these meetings and that OSAMA BIN LADEN was present in the US under the name of TIM OSMAN. Mr. Osman was taken to special demonstrations at US military bases.\n\n 4) I have an exemplary track record in the counter intelligence field.\n\nMr. [..blacked out..] is flying out to visit me this week. This letter is my authorization for you to discuss the details of all my written and oral communications with him. The [[Abuhousan]] Brothers are writing similar letters to their attorneys: [..blacked out words..] to authorize them to speak to both you and [..blacked out words..] on this matter. This authorization will also include your access to documents.\n\nAs soon as we learned that an actual attack was in the works, we realized we can't fool around with this. On the other hand, we don't want to get screwed by the govt.\n\nMike Riconosciuto\n\nP.S. Somebody just got certiorari on the PLRA exhaustion of administrative remedy requirements. Notice on this enclosed.\n<<<
*1982\n - [[Inslaw]], Inc., signs a 3-year $10 million contract with the US Justice Department to develop case management software.\n\n*1987\n - Federal Bankruptcy Judge [[George F. Bason, Jr.]], finds in favor of Inslaw: "The [D]epartment [of Justice] took, converted, stole INSLAW's software by trickery, fraud and deceit... the Justice Department engaged in an outrageous, deceitful, fraudulent game of cat and mouse, demonstrating contempt for both the law and any principle of fair dealing." Bason orders the [[DOJ]] to pay Inslaw $6.8 million. The order is later overturned on a technicality.\n\n*21 Mar 1991\n - [[Michael Riconosciuto]], a.k.a. "Danger Man", signs a sworn affidavit admitting he altered the [[PROMIS]] software and sold it to the Royal Canadian Mounted Police ([[RCMP]]).\n\n*10 Aug 1991\n - Private investigator [[Danny Casolaro]] is found dead in a Martinsburg, West Virginia, motel. His death is ruled a suicide, but his body is embalmed before his family is informed of his death.\n\n*5 Nov 1991\n - Mossad alleged in book //Gideon's Spies// to have killed media mogul [[Robert Maxwell]]. What is known is that Maxwell died in highly unusual circumstances in his yacht in the Canary Islands.\n\n*5 Nov 1994\n - [[Ronald Reagan]] announces he has Alzheimer's. The hacker group [[Cult of the Dead Cow]] promptly claims responsibility. cDc threatens to give each former president Alzheimer's unless certain demands are met. Among them: "//We want the government to own up to the evils it perpetrated in the Inslaw case//."
If you are connected to the Internet, you can always get the latest version of this application. There are ''three'' ways you can do this:\n\nClick the following button if you simply want to get the latest changes to any of the core tiddlers that make up this application. These tiddlers are tagged "gtd", and updating in this way will not overwrite any of the core tiddlers that you may have changed unless the core tiddlers are even newer than your changes. This is the recommended way to get updates:\n**<<importUpdates "http://www.dcubed.ca/gtd-update.html">>\n\nClick the following button if you would like to get the latest changes to any of the core tiddlers, but to interactively approve each and every updated tiddler as it is loaded into your system. If there are no updated tiddlers, you will not be prompted and the update will exit quietly:\n**<<importUpdates "http://www.dcubed.ca/gtd-update.html" updates "Update interactively" "Click here to interactively update the application" ask>>\n\nClick the following button if you want to download all of the core tiddlers, regardless of their modification date. Use this to absolutely ensure that you are running with the core application as it was originally written:\n**<<importUpdates "http://www.dcubed.ca/gtd-update.html" all "Update everything">>\n\n''For your safety, your file will be saved and a backup file will be automatically generated before any update is performed.''\n\n!!Update ~TiddlyWiki\nAs a convenience, you can easily update the ~TiddlyWiki core used by this application by clicking on the following button:\n**<<twupdate "Update TiddlyWiki">>\n\nNote that you do not //need// to use this to update ~TiddlyWiki; you can always use [[this technique|http://www.tiddlywiki.com/#HowToUpgrade]]. But a single click seems a whole lot easier!\n\n!!Import and export\nIf you want finer-grained control over moving tiddlers in and out of this system, the following tools will do the job:\n\n** +++[Import...|Import selected tiddlers from another wiki]<<importTiddlers inline>>===\n\n** +++[Export...|Export selected tiddlers from this wiki]<<exportTiddlers inline>>===\n
| !date | !user | !location | !storeUrl | !uploadDir | !toFilename | !backupdir | !origin |\n| 6/9/2006 6:21:34 | KeyMaker | [[/|http://infinite.tiddlyspot.com/]] | [[store.cgi|http://infinite.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 6/9/2006 6:42:52 | KeyMaker | [[/|http://infinite.tiddlyspot.com/#1.6180339887]] | [[store.cgi|http://infinite.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 6/9/2006 6:53:28 | KeyMaker | [[/|http://infinite.tiddlyspot.com/]] | [[store.cgi|http://infinite.tiddlyspot.com/store.cgi]] | . | index.html | . | Ok |\n| 6/9/2006 6:59:50 | KeyMaker | [[/|http://infinite.tiddlyspot.com/]] | [[store.cgi|http://infinite.tiddlyspot.com/store.cgi]] | . | index.html | . | Ok |\n| 6/9/2006 7:10:30 | KeyMaker | [[/|http://infinite.tiddlyspot.com/]] | [[store.cgi|http://infinite.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 6/9/2006 19:41:10 | KeyMaker | [[/|http://infinite.tiddlyspot.com/]] | [[store.cgi|http://infinite.tiddlyspot.com/store.cgi]] | . | index.html | . | Ok |\n| 6/9/2006 19:48:36 | KeyMaker | [[/|http://infinite.tiddlyspot.com/]] | [[store.cgi|http://infinite.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 6/9/2006 20:52:12 | KeyMaker | [[/|http://infinite.tiddlyspot.com/]] | [[store.cgi|http://infinite.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 6/9/2006 21:5:5 | KeyMaker | [[/|http://infinite.tiddlyspot.com/]] | [[store.cgi|http://infinite.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 6/9/2006 22:49:15 | KeyMaker | [[/|http://infinite.tiddlyspot.com/]] | [[store.cgi|http://infinite.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 6/9/2006 22:53:24 | KeyMaker | [[/|http://infinite.tiddlyspot.com/]] | [[store.cgi|http://infinite.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 6/9/2006 22:55:32 | KeyMaker | [[/|http://infinite.tiddlyspot.com/]] | [[store.cgi|http://infinite.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 6/9/2006 23:3:6 | KeyMaker | [[/|http://infinite.tiddlyspot.com/]] | [[store.cgi|http://infinite.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 6/9/2006 23:40:37 | KeyMaker | [[/|http://infinite.tiddlyspot.com/]] | [[store.cgi|http://infinite.tiddlyspot.com/store.cgi]] | . | index.html | . | Ok |\n| 6/9/2006 23:45:10 | KeyMaker | [[/|http://infinite.tiddlyspot.com/]] | [[store.cgi|http://infinite.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 6/9/2006 23:46:54 | KeyMaker | [[/|http://infinite.tiddlyspot.com/]] | [[store.cgi|http://infinite.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 6/9/2006 23:51:11 | KeyMaker | [[/|http://infinite.tiddlyspot.com/]] | [[store.cgi|http://infinite.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 6/9/2006 23:54:31 | KeyMaker | [[/|http://infinite.tiddlyspot.com/]] | [[store.cgi|http://infinite.tiddlyspot.com/store.cgi]] | . | index.html | . | Ok |\n| 7/9/2006 0:2:39 | KeyMaker | [[/|http://infinite.tiddlyspot.com/]] | [[store.cgi|http://infinite.tiddlyspot.com/store.cgi]] | . | index.html | . | Ok |\n| 7/9/2006 0:31:30 | KeyMaker | [[/|http://infinite.tiddlyspot.com/]] | [[store.cgi|http://infinite.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 7/9/2006 0:43:19 | KeyMaker | [[/|http://infinite.tiddlyspot.com/]] | [[store.cgi|http://infinite.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 7/9/2006 0:47:22 | KeyMaker | [[/|http://infinite.tiddlyspot.com/]] | [[store.cgi|http://infinite.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 7/9/2006 0:53:48 | KeyMaker | [[/|http://infinite.tiddlyspot.com/]] | [[store.cgi|http://infinite.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 7/9/2006 0:55:43 | KeyMaker | [[/|http://infinite.tiddlyspot.com/]] | [[store.cgi|http://infinite.tiddlyspot.com/store.cgi]] | . | index.html | . | Ok |\n| 7/9/2006 1:4:8 | KeyMaker | [[/|http://infinite.tiddlyspot.com/]] | [[store.cgi|http://infinite.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 7/9/2006 1:12:13 | KeyMaker | [[/|http://infinite.tiddlyspot.com/]] | [[store.cgi|http://infinite.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 7/9/2006 1:16:42 | KeyMaker | [[/|http://infinite.tiddlyspot.com/]] | [[store.cgi|http://infinite.tiddlyspot.com/store.cgi]] | . | index.html | . | Ok |\n| 7/9/2006 1:44:29 | KeyMaker | [[/|http://infinite.tiddlyspot.com/]] | [[store.cgi|http://infinite.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 7/9/2006 1:48:8 | KeyMaker | [[/|http://infinite.tiddlyspot.com/]] | [[store.cgi|http://infinite.tiddlyspot.com/store.cgi]] | . | index.html | . | Ok |\n| 7/9/2006 1:49:37 | KeyMaker | [[/|http://infinite.tiddlyspot.com/]] | [[store.cgi|http://infinite.tiddlyspot.com/store.cgi]] | . | index.html | . | Ok |\n| 7/9/2006 7:49:20 | KeyMaker | [[/|http://infinite.tiddlyspot.com/]] | [[store.cgi|http://infinite.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 8/9/2006 12:44:59 | KeyMaker | [[/|http://infinite.tiddlyspot.com/]] | [[store.cgi|http://infinite.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 8/9/2006 12:54:45 | KeyMaker | [[/|http://infinite.tiddlyspot.com/]] | [[store.cgi|http://infinite.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 8/9/2006 13:0:4 | KeyMaker | [[/|http://infinite.tiddlyspot.com/]] | [[store.cgi|http://infinite.tiddlyspot.com/store.cgi]] | . | index.html | . | Ok |\n| 8/9/2006 13:2:39 | KeyMaker | [[/|http://infinite.tiddlyspot.com/]] | [[store.cgi|http://infinite.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 8/9/2006 13:56:11 | KeyMaker | [[/|http://infinite.tiddlyspot.com/]] | [[store.cgi|http://infinite.tiddlyspot.com/store.cgi]] | . | index.html | . | Ok |\n| 8/9/2006 14:1:30 | KeyMaker | [[/|http://infinite.tiddlyspot.com/]] | [[store.cgi|http://infinite.tiddlyspot.com/store.cgi]] | . | index.html | . | Ok |\n| 8/9/2006 14:3:31 | KeyMaker | [[/|http://infinite.tiddlyspot.com/]] | [[store.cgi|http://infinite.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 8/9/2006 14:9:56 | KeyMaker | [[/|http://infinite.tiddlyspot.com/]] | [[store.cgi|http://infinite.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 8/9/2006 14:17:18 | KeyMaker | [[/|http://infinite.tiddlyspot.com/]] | [[store.cgi|http://infinite.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 8/9/2006 14:19:4 | KeyMaker | [[/|http://infinite.tiddlyspot.com/]] | [[store.cgi|http://infinite.tiddlyspot.com/store.cgi]] | . | index.html | . | Ok |\n| 8/9/2006 17:6:52 | KeyMaker | [[/|http://infinite.tiddlyspot.com/]] | [[store.cgi|http://infinite.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 8/9/2006 17:24:34 | KeyMaker | [[/|http://infinite.tiddlyspot.com/]] | [[store.cgi|http://infinite.tiddlyspot.com/store.cgi]] | . | index.html | . | Ok |\n| 8/9/2006 17:46:39 | KeyMaker | [[/|http://infinite.tiddlyspot.com/]] | [[store.cgi|http://infinite.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 8/9/2006 18:5:51 | KeyMaker | [[/|http://infinite.tiddlyspot.com/]] | [[store.cgi|http://infinite.tiddlyspot.com/store.cgi]] | . | index.html | . | Ok |\n| 8/9/2006 20:39:42 | KeyMaker | [[/|http://infinite.tiddlyspot.com/]] | [[store.cgi|http://infinite.tiddlyspot.com/store.cgi]] | . | index.html | . | Ok |\n| 8/9/2006 21:34:5 | KeyMaker | [[/|http://infinite.tiddlyspot.com/]] | [[store.cgi|http://infinite.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 9/9/2006 2:57:53 | KeyMaker | [[/|http://infinite.tiddlyspot.com/]] | [[store.cgi|http://infinite.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 11/9/2006 1:22:3 | KeyMaker | [[/|http://infinite.tiddlyspot.com/]] | [[store.cgi|http://infinite.tiddlyspot.com/store.cgi]] | . | index.html | . | Ok |\n| 11/9/2006 1:56:54 | KeyMaker | [[/|http://infinite.tiddlyspot.com/]] | [[store.cgi|http://infinite.tiddlyspot.com/store.cgi]] | . | index.html | . | Ok |\n| 11/9/2006 2:26:7 | KeyMaker | [[/|http://infinite.tiddlyspot.com/]] | [[store.cgi|http://infinite.tiddlyspot.com/store.cgi]] | . | index.html | . | Ok |\n| 11/9/2006 2:37:6 | KeyMaker | [[/|http://infinite.tiddlyspot.com/]] | [[store.cgi|http://infinite.tiddlyspot.com/store.cgi]] | . | index.html | . | Ok |\n| 11/9/2006 2:45:56 | KeyMaker | [[/|http://infinite.tiddlyspot.com/]] | [[store.cgi|http://infinite.tiddlyspot.com/store.cgi]] | . | index.html | . | Ok |\n| 11/9/2006 2:50:7 | KeyMaker | [[/|http://infinite.tiddlyspot.com/]] | [[store.cgi|http://infinite.tiddlyspot.com/store.cgi]] | . | index.html | . | Ok |\n| 11/9/2006 2:51:49 | KeyMaker | [[/|http://infinite.tiddlyspot.com/]] | [[store.cgi|http://infinite.tiddlyspot.com/store.cgi]] | . | index.html | . | Ok |\n| 11/9/2006 2:53:14 | KeyMaker | [[/|http://infinite.tiddlyspot.com/]] | [[store.cgi|http://infinite.tiddlyspot.com/store.cgi]] | . | index.html | . | Ok |\n| 11/9/2006 2:59:0 | KeyMaker | [[/|http://infinite.tiddlyspot.com/]] | [[store.cgi|http://infinite.tiddlyspot.com/store.cgi]] | . | index.html | . | Ok |\n| 11/9/2006 3:3:45 | KeyMaker | [[/|http://infinite.tiddlyspot.com/]] | [[store.cgi|http://infinite.tiddlyspot.com/store.cgi]] | . | index.html | . | Ok |\n| 11/9/2006 3:6:15 | KeyMaker | [[/|http://infinite.tiddlyspot.com/]] | [[store.cgi|http://infinite.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 11/9/2006 3:17:36 | KeyMaker | [[/|http://infinite.tiddlyspot.com/]] | [[store.cgi|http://infinite.tiddlyspot.com/store.cgi]] | . | index.html | . | Ok |\n| 11/9/2006 3:28:40 | KeyMaker | [[/|http://infinite.tiddlyspot.com/]] | [[store.cgi|http://infinite.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 11/9/2006 3:34:51 | KeyMaker | [[/|http://infinite.tiddlyspot.com/]] | [[store.cgi|http://infinite.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 11/9/2006 3:39:43 | KeyMaker | [[/|http://infinite.tiddlyspot.com/]] | [[store.cgi|http://infinite.tiddlyspot.com/store.cgi]] | . | index.html | . | Ok |\n| 11/9/2006 3:40:52 | KeyMaker | [[/|http://infinite.tiddlyspot.com/]] | [[store.cgi|http://infinite.tiddlyspot.com/store.cgi]] | . | index.html | . | Ok |\n| 11/9/2006 3:42:56 | KeyMaker | [[/|http://infinite.tiddlyspot.com/]] | [[store.cgi|http://infinite.tiddlyspot.com/store.cgi]] | . | index.html | . | Ok |\n| 11/9/2006 3:47:17 | KeyMaker | [[/|http://infinite.tiddlyspot.com/]] | [[store.cgi|http://infinite.tiddlyspot.com/store.cgi]] | . | index.html | . | Ok |\n| 11/9/2006 3:50:46 | KeyMaker | [[/|http://infinite.tiddlyspot.com/]] | [[store.cgi|http://infinite.tiddlyspot.com/store.cgi]] | . | index.html | . | Ok |\n| 11/9/2006 4:0:41 | KeyMaker | [[/|http://infinite.tiddlyspot.com/]] | [[store.cgi|http://infinite.tiddlyspot.com/store.cgi]] | . | index.html | . | Ok |\n| 11/9/2006 4:18:12 | KeyMaker | [[/|http://infinite.tiddlyspot.com/]] | [[store.cgi|http://infinite.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 11/9/2006 4:28:16 | KeyMaker | [[/|http://infinite.tiddlyspot.com/]] | [[store.cgi|http://infinite.tiddlyspot.com/store.cgi]] | . | index.html | . | Ok |\n| 11/9/2006 4:46:29 | KeyMaker | [[/|http://infinite.tiddlyspot.com/]] | [[store.cgi|http://infinite.tiddlyspot.com/store.cgi]] | . | index.html | . | Ok |\n| 11/9/2006 4:51:36 | KeyMaker | [[/|http://infinite.tiddlyspot.com/]] | [[store.cgi|http://infinite.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 11/9/2006 4:53:3 | KeyMaker | [[/|http://infinite.tiddlyspot.com/]] | [[store.cgi|http://infinite.tiddlyspot.com/store.cgi]] | . | index.html | . | Ok |\n| 11/9/2006 4:54:41 | KeyMaker | [[/|http://infinite.tiddlyspot.com/]] | [[store.cgi|http://infinite.tiddlyspot.com/store.cgi]] | . | index.html | . | Ok |\n| 11/9/2006 5:7:4 | KeyMaker | [[/|http://infinite.tiddlyspot.com/]] | [[store.cgi|http://infinite.tiddlyspot.com/store.cgi]] | . | index.html | . | Ok |\n| 11/9/2006 5:30:59 | KeyMaker | [[/|http://infinite.tiddlyspot.com/]] | [[store.cgi|http://infinite.tiddlyspot.com/store.cgi]] | . | index.html | . | Ok |\n| 11/9/2006 5:53:55 | KeyMaker | [[/|http://infinite.tiddlyspot.com/]] | [[store.cgi|http://infinite.tiddlyspot.com/store.cgi]] | . | index.html | . | Ok |\n| 11/9/2006 5:59:34 | KeyMaker | [[/|http://infinite.tiddlyspot.com/]] | [[store.cgi|http://infinite.tiddlyspot.com/store.cgi]] | . | index.html | . | Ok |\n| 11/9/2006 6:6:44 | KeyMaker | [[/|http://infinite.tiddlyspot.com/]] | [[store.cgi|http://infinite.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 18/9/2006 0:28:0 | KeyMaker | [[/|http://infinite.tiddlyspot.com/]] | [[store.cgi|http://infinite.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 18/9/2006 0:33:17 | KeyMaker | [[/|http://infinite.tiddlyspot.com/]] | [[store.cgi|http://infinite.tiddlyspot.com/store.cgi]] | . | index.html | . | Ok |\n| 18/9/2006 0:33:55 | KeyMaker | [[/|http://infinite.tiddlyspot.com/#%5B%5BJournal%20%3A%20Last%2030%20Entries%5D%5D]] | [[store.cgi|http://infinite.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 18/9/2006 0:50:51 | KeyMaker | [[/|http://infinite.tiddlyspot.com/]] | [[store.cgi|http://infinite.tiddlyspot.com/store.cgi]] | . | index.html | . | Ok |\n| 18/9/2006 1:0:35 | KeyMaker | [[/|http://infinite.tiddlyspot.com/]] | [[store.cgi|http://infinite.tiddlyspot.com/store.cgi]] | . | index.html | . | Ok |\n| 18/9/2006 1:4:5 | KeyMaker | [[/|http://infinite.tiddlyspot.com/]] | [[store.cgi|http://infinite.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 18/9/2006 6:0:31 | KeyMaker | [[/|http://infinite.tiddlyspot.com/]] | [[store.cgi|http://infinite.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 21/9/2006 2:27:44 | KeyMaker | [[/|http://infinite.tiddlyspot.com/]] | [[store.cgi|http://infinite.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 21/9/2006 4:11:50 | KeyMaker | [[/|http://infinite.tiddlyspot.com/]] | [[store.cgi|http://infinite.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 21/9/2006 4:25:58 | KeyMaker | [[/|http://infinite.tiddlyspot.com/]] | [[store.cgi|http://infinite.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 21/9/2006 4:30:33 | KeyMaker | [[/|http://infinite.tiddlyspot.com/]] | [[store.cgi|http://infinite.tiddlyspot.com/store.cgi]] | . | index.html | . | Ok |\n| 21/9/2006 4:33:18 | KeyMaker | [[/|http://infinite.tiddlyspot.com/]] | [[store.cgi|http://infinite.tiddlyspot.com/store.cgi]] | . | index.html | . | Ok |\n| 21/9/2006 4:39:55 | KeyMaker | [[/|http://infinite.tiddlyspot.com/]] | [[store.cgi|http://infinite.tiddlyspot.com/store.cgi]] | . | index.html | . | Ok |\n| 21/9/2006 4:48:36 | KeyMaker | [[/|http://infinite.tiddlyspot.com/]] | [[store.cgi|http://infinite.tiddlyspot.com/store.cgi]] | . | index.html | . | Ok |\n| 21/9/2006 5:5:39 | KeyMaker | [[/|http://infinite.tiddlyspot.com/]] | [[store.cgi|http://infinite.tiddlyspot.com/store.cgi]] | . | index.html | . | Ok |\n| 21/9/2006 5:9:12 | KeyMaker | [[/|http://infinite.tiddlyspot.com/]] | [[store.cgi|http://infinite.tiddlyspot.com/store.cgi]] | . | index.html | . | Ok |\n| 21/9/2006 5:17:49 | KeyMaker | [[/|http://infinite.tiddlyspot.com/]] | [[store.cgi|http://infinite.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 21/9/2006 5:22:35 | KeyMaker | [[/|http://infinite.tiddlyspot.com/]] | [[store.cgi|http://infinite.tiddlyspot.com/store.cgi]] | . | index.html | . | Ok |\n| 21/9/2006 5:39:32 | KeyMaker | [[/|http://infinite.tiddlyspot.com/]] | [[store.cgi|http://infinite.tiddlyspot.com/store.cgi]] | . | index.html | . | Ok |\n| 21/9/2006 5:43:25 | KeyMaker | [[/|http://infinite.tiddlyspot.com/]] | [[store.cgi|http://infinite.tiddlyspot.com/store.cgi]] | . | index.html | . | Ok |\n| 21/9/2006 6:34:4 | KeyMaker | [[/|http://infinite.tiddlyspot.com/]] | [[store.cgi|http://infinite.tiddlyspot.com/store.cgi]] | . | index.html | . | Ok |\n| 21/9/2006 6:43:48 | KeyMaker | [[/|http://infinite.tiddlyspot.com/]] | [[store.cgi|http://infinite.tiddlyspot.com/store.cgi]] | . | index.html | . | Ok |\n| 21/9/2006 6:46:2 | KeyMaker | [[/|http://infinite.tiddlyspot.com/]] | [[store.cgi|http://infinite.tiddlyspot.com/store.cgi]] | . | index.html | . | Ok |\n| 21/9/2006 6:49:11 | KeyMaker | [[/|http://infinite.tiddlyspot.com/]] | [[store.cgi|http://infinite.tiddlyspot.com/store.cgi]] | . | index.html | . | Ok |\n| 21/9/2006 6:51:34 | KeyMaker | [[/|http://infinite.tiddlyspot.com/]] | [[store.cgi|http://infinite.tiddlyspot.com/store.cgi]] | . | index.html | . | Ok |\n| 21/9/2006 6:55:46 | KeyMaker | [[/|http://infinite.tiddlyspot.com/]] | [[store.cgi|http://infinite.tiddlyspot.com/store.cgi]] | . | index.html | . | Ok |\n| 21/9/2006 6:59:37 | KeyMaker | [[/|http://infinite.tiddlyspot.com/]] | [[store.cgi|http://infinite.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 21/9/2006 7:19:20 | KeyMaker | [[/|http://infinite.tiddlyspot.com/]] | [[store.cgi|http://infinite.tiddlyspot.com/store.cgi]] | . | index.html | . | Ok |\n| 21/9/2006 7:21:40 | KeyMaker | [[/|http://infinite.tiddlyspot.com/]] | [[store.cgi|http://infinite.tiddlyspot.com/store.cgi]] | . | index.html | . | Ok |\n| 21/9/2006 7:24:57 | KeyMaker | [[/|http://infinite.tiddlyspot.com/]] | [[store.cgi|http://infinite.tiddlyspot.com/store.cgi]] | . | index.html | . | Ok |\n| 21/9/2006 7:30:39 | KeyMaker | [[/|http://infinite.tiddlyspot.com/]] | [[store.cgi|http://infinite.tiddlyspot.com/store.cgi]] | . | index.html | . | Ok |\n| 21/9/2006 8:24:44 | KeyMaker | [[/|http://infinite.tiddlyspot.com/]] | [[store.cgi|http://infinite.tiddlyspot.com/store.cgi]] | . | index.html | . | Ok |\n| 21/9/2006 8:45:33 | KeyMaker | [[/|http://infinite.tiddlyspot.com/]] | [[store.cgi|http://infinite.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 23/9/2006 18:50:1 | KeyMaker | [[/|http://infinite.tiddlyspot.com/]] | [[store.cgi|http://infinite.tiddlyspot.com/store.cgi]] | . | index.html | . | Ok |\n| 23/9/2006 18:51:9 | KeyMaker | [[/|http://infinite.tiddlyspot.com/]] | [[store.cgi|http://infinite.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 23/9/2006 20:2:47 | KeyMaker | [[/|http://infinite.tiddlyspot.com/]] | [[store.cgi|http://infinite.tiddlyspot.com/store.cgi]] | . | index.html | . | Ok |\n| 23/9/2006 20:7:48 | KeyMaker | [[/|http://infinite.tiddlyspot.com/]] | [[store.cgi|http://infinite.tiddlyspot.com/store.cgi]] | . | index.html | . | Ok |\n| 23/9/2006 20:34:56 | KeyMaker | [[/|http://infinite.tiddlyspot.com/]] | [[store.cgi|http://infinite.tiddlyspot.com/store.cgi]] | . | index.html | . | Ok |\n| 23/9/2006 23:18:30 | KeyMaker | [[/|http://infinite.tiddlyspot.com/]] | [[store.cgi|http://infinite.tiddlyspot.com/store.cgi]] | . | index.html | . | Ok |\n| 23/9/2006 23:23:21 | KeyMaker | [[/|http://infinite.tiddlyspot.com/]] | [[store.cgi|http://infinite.tiddlyspot.com/store.cgi]] | . | index.html | . | Ok |\n| 23/9/2006 23:47:17 | KeyMaker | [[/|http://infinite.tiddlyspot.com/]] | [[store.cgi|http://infinite.tiddlyspot.com/store.cgi]] | . | index.html | . | Ok |\n| 23/9/2006 23:49:23 | KeyMaker | [[/|http://infinite.tiddlyspot.com/]] | [[store.cgi|http://infinite.tiddlyspot.com/store.cgi]] | . | index.html | . | Ok |\n| 24/9/2006 1:25:4 | KeyMaker | [[/|http://infinite.tiddlyspot.com/]] | [[store.cgi|http://infinite.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 24/9/2006 1:30:53 | KeyMaker | [[/|http://infinite.tiddlyspot.com/]] | [[store.cgi|http://infinite.tiddlyspot.com/store.cgi]] | . | index.html | . | Ok |\n| 24/9/2006 1:38:6 | KeyMaker | [[/|http://infinite.tiddlyspot.com/]] | [[store.cgi|http://infinite.tiddlyspot.com/store.cgi]] | . | index.html | . | Ok |\n| 24/9/2006 2:22:37 | KeyMaker | [[/|http://infinite.tiddlyspot.com/]] | [[store.cgi|http://infinite.tiddlyspot.com/store.cgi]] | . | index.html | . | Ok |\n| 24/9/2006 2:24:45 | KeyMaker | [[/|http://infinite.tiddlyspot.com/]] | [[store.cgi|http://infinite.tiddlyspot.com/store.cgi]] | . | index.html | . | Ok |\n| 24/9/2006 2:28:15 | KeyMaker | [[/|http://infinite.tiddlyspot.com/]] | [[store.cgi|http://infinite.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 24/9/2006 3:8:30 | KeyMaker | [[/|http://infinite.tiddlyspot.com/]] | [[store.cgi|http://infinite.tiddlyspot.com/store.cgi]] | . | index.html | . | Ok |\n| 24/9/2006 3:31:33 | KeyMaker | [[/|http://infinite.tiddlyspot.com/]] | [[store.cgi|http://infinite.tiddlyspot.com/store.cgi]] | . | index.html | . | Ok |\n| 24/9/2006 3:33:20 | KeyMaker | [[/|http://infinite.tiddlyspot.com/]] | [[store.cgi|http://infinite.tiddlyspot.com/store.cgi]] | . | index.html | . | Ok |\n| 24/9/2006 3:52:34 | KeyMaker | [[/|http://infinite.tiddlyspot.com/]] | [[store.cgi|http://infinite.tiddlyspot.com/store.cgi]] | . | index.html | . | Ok |\n| 24/9/2006 3:56:37 | KeyMaker | [[/|http://infinite.tiddlyspot.com/]] | [[store.cgi|http://infinite.tiddlyspot.com/store.cgi]] | . | index.html | . | Ok |\n| 24/9/2006 3:58:21 | KeyMaker | [[/|http://infinite.tiddlyspot.com/]] | [[store.cgi|http://infinite.tiddlyspot.com/store.cgi]] | . | index.html | . | Ok |\n| 24/9/2006 4:15:25 | KeyMaker | [[/|http://infinite.tiddlyspot.com/]] | [[store.cgi|http://infinite.tiddlyspot.com/store.cgi]] | . | index.html | . | Ok |\n| 24/9/2006 4:43:26 | KeyMaker | [[/|http://infinite.tiddlyspot.com/]] | [[store.cgi|http://infinite.tiddlyspot.com/store.cgi]] | . | index.html | . | Ok |\n| 24/9/2006 4:50:5 | KeyMaker | [[/|http://infinite.tiddlyspot.com/]] | [[store.cgi|http://infinite.tiddlyspot.com/store.cgi]] | . | index.html | . | Ok |\n| 24/9/2006 5:1:10 | KeyMaker | [[/|http://infinite.tiddlyspot.com/]] | [[store.cgi|http://infinite.tiddlyspot.com/store.cgi]] | . | index.html | . | Ok |\n| 24/9/2006 5:56:50 | KeyMaker | [[/|http://infinite.tiddlyspot.com/]] | [[store.cgi|http://infinite.tiddlyspot.com/store.cgi]] | . | index.html | . | Ok |\n| 24/9/2006 5:59:14 | KeyMaker | [[/|http://infinite.tiddlyspot.com/]] | [[store.cgi|http://infinite.tiddlyspot.com/store.cgi]] | . | index.html | . | Ok |\n| 24/9/2006 6:2:5 | KeyMaker | [[/|http://infinite.tiddlyspot.com/]] | [[store.cgi|http://infinite.tiddlyspot.com/store.cgi]] | . | index.html | . | Ok |\n| 24/9/2006 7:37:46 | KeyMaker | [[/|http://infinite.tiddlyspot.com/]] | [[store.cgi|http://infinite.tiddlyspot.com/store.cgi]] | . | index.html | . | Ok |\n| 24/9/2006 7:54:18 | KeyMaker | [[/|http://infinite.tiddlyspot.com/]] | [[store.cgi|http://infinite.tiddlyspot.com/store.cgi]] | . | index.html | . | Ok |\n| 24/9/2006 8:5:18 | KeyMaker | [[/|http://infinite.tiddlyspot.com/]] | [[store.cgi|http://infinite.tiddlyspot.com/store.cgi]] | . | index.html | . | Ok |\n| 24/9/2006 8:15:38 | KeyMaker | [[/|http://infinite.tiddlyspot.com/]] | [[store.cgi|http://infinite.tiddlyspot.com/store.cgi]] | . | index.html | . | Ok |\n| 24/9/2006 8:22:23 | KeyMaker | [[/|http://infinite.tiddlyspot.com/]] | [[store.cgi|http://infinite.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 24/9/2006 9:31:35 | KeyMaker | [[/|http://infinite.tiddlyspot.com/]] | [[store.cgi|http://infinite.tiddlyspot.com/store.cgi]] | . | index.html | . | Ok |\n| 24/9/2006 9:33:19 | KeyMaker | [[/|http://infinite.tiddlyspot.com/]] | [[store.cgi|http://infinite.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 24/9/2006 9:38:10 | KeyMaker | [[/|http://infinite.tiddlyspot.com/]] | [[store.cgi|http://infinite.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 24/9/2006 9:47:46 | KeyMaker | [[/|http://infinite.tiddlyspot.com/]] | [[store.cgi|http://infinite.tiddlyspot.com/store.cgi]] | . | index.html | . | Ok |\n| 24/9/2006 10:1:21 | KeyMaker | [[/|http://infinite.tiddlyspot.com/]] | [[store.cgi|http://infinite.tiddlyspot.com/store.cgi]] | . | index.html | . | Ok |\n| 24/9/2006 10:10:49 | KeyMaker | [[/|http://infinite.tiddlyspot.com/]] | [[store.cgi|http://infinite.tiddlyspot.com/store.cgi]] | . | index.html | . | Ok |\n| 24/9/2006 11:33:48 | KeyMaker | [[/|http://infinite.tiddlyspot.com/]] | [[store.cgi|http://infinite.tiddlyspot.com/store.cgi]] | . | index.html | . | Ok |\n| 24/9/2006 11:57:33 | KeyMaker | [[/|http://infinite.tiddlyspot.com/]] | [[store.cgi|http://infinite.tiddlyspot.com/store.cgi]] | . | index.html | . | Ok |\n| 24/9/2006 11:59:46 | KeyMaker | [[/|http://infinite.tiddlyspot.com/]] | [[store.cgi|http://infinite.tiddlyspot.com/store.cgi]] | . | index.html | . | Ok |\n| 24/9/2006 12:23:45 | KeyMaker | [[/|http://infinite.tiddlyspot.com/]] | [[store.cgi|http://infinite.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 24/9/2006 22:37:20 | KeyMaker | [[/|http://infinite.tiddlyspot.com/]] | [[store.cgi|http://infinite.tiddlyspot.com/store.cgi]] | . | index.html | . | Ok |\n| 24/9/2006 22:54:54 | KeyMaker | [[/|http://infinite.tiddlyspot.com/]] | [[store.cgi|http://infinite.tiddlyspot.com/store.cgi]] | . | index.html | . | Ok |\n| 25/9/2006 0:53:55 | KeyMaker | [[/|http://infinite.tiddlyspot.com/]] | [[store.cgi|http://infinite.tiddlyspot.com/store.cgi]] | . | index.html | . | Ok |\n| 25/9/2006 0:59:14 | KeyMaker | [[/|http://infinite.tiddlyspot.com/]] | [[store.cgi|http://infinite.tiddlyspot.com/store.cgi]] | . | index.html | . | Ok |\n| 25/9/2006 1:3:41 | KeyMaker | [[/|http://infinite.tiddlyspot.com/]] | [[store.cgi|http://infinite.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 25/9/2006 1:59:17 | KeyMaker | [[/|http://infinite.tiddlyspot.com/]] | [[store.cgi|http://infinite.tiddlyspot.com/store.cgi]] | . | index.html | . | Ok |\n| 25/9/2006 3:0:13 | KeyMaker | [[/|http://infinite.tiddlyspot.com/]] | [[store.cgi|http://infinite.tiddlyspot.com/store.cgi]] | . | index.html | . | Ok |\n| 25/9/2006 4:12:25 | KeyMaker | [[/|http://infinite.tiddlyspot.com/]] | [[store.cgi|http://infinite.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 25/9/2006 4:59:25 | KeyMaker | [[/|http://infinite.tiddlyspot.com/]] | [[store.cgi|http://infinite.tiddlyspot.com/store.cgi]] | . | index.html | . | Ok |\n| 25/9/2006 5:42:56 | KeyMaker | [[/|http://infinite.tiddlyspot.com/]] | [[store.cgi|http://infinite.tiddlyspot.com/store.cgi]] | . | index.html | . | Ok |\n| 25/9/2006 6:28:51 | KeyMaker | [[/|http://infinite.tiddlyspot.com/]] | [[store.cgi|http://infinite.tiddlyspot.com/store.cgi]] | . | index.html | . | Ok |\n| 25/9/2006 6:30:32 | KeyMaker | [[/|http://infinite.tiddlyspot.com/]] | [[store.cgi|http://infinite.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 25/9/2006 19:20:11 | KeyMaker | [[/|http://infinite.tiddlyspot.com/]] | [[store.cgi|http://infinite.tiddlyspot.com/store.cgi]] | . | index.html | . | Ok |\n| 25/9/2006 21:2:52 | KeyMaker | [[/|http://infinite.tiddlyspot.com/]] | [[store.cgi|http://infinite.tiddlyspot.com/store.cgi]] | . | index.html | . | Ok |\n| 25/9/2006 22:20:12 | KeyMaker | [[/|http://infinite.tiddlyspot.com/]] | [[store.cgi|http://infinite.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 25/9/2006 22:29:9 | KeyMaker | [[/|http://infinite.tiddlyspot.com/]] | [[store.cgi|http://infinite.tiddlyspot.com/store.cgi]] | . | index.html | . | Ok |\n| 25/9/2006 22:31:3 | KeyMaker | [[/|http://infinite.tiddlyspot.com/]] | [[store.cgi|http://infinite.tiddlyspot.com/store.cgi]] | . | index.html | . | Ok |\n| 25/9/2006 22:37:35 | KeyMaker | [[/|http://infinite.tiddlyspot.com/]] | [[store.cgi|http://infinite.tiddlyspot.com/store.cgi]] | . | index.html | . | Ok |\n| 25/9/2006 23:2:15 | KeyMaker | [[/|http://infinite.tiddlyspot.com/]] | [[store.cgi|http://infinite.tiddlyspot.com/store.cgi]] | . | index.html | . |\n| 25/9/2006 23:34:51 | KeyMaker | [[/|http://infinite.tiddlyspot.com/]] | [[store.cgi|http://infinite.tiddlyspot.com/store.cgi]] | . | index.html | . | Ok |\n| 25/9/2006 23:40:45 | KeyMaker | [[/|http://infinite.tiddlyspot.com/]] | [[store.cgi|http://infinite.tiddlyspot.com/store.cgi]] | . | index.html | . |
/***\n<<tiddler UploadPluginDoc>>\n!Code\n***/\n//{{{\nversion.extensions.UploadPlugin = {\n major: 3, minor: 3, revision: 3, \n date: new Date(2006,6,30),\n type: 'macro',\n source: 'http://tiddlywiki.bidix.info/#UploadPlugin',\n docs: 'http://tiddlywiki.bidix.info/#UploadPluginDoc'\n};\n//}}}\n\n////+++!![config.lib.file]\n\n//{{{\nif (!config.lib) config.lib = {};\nif (!config.lib.file) config.lib.file= {\n author: 'BidiX',\n version: {major: 0, minor: 1, revision: 0}, \n date: new Date(2006,3,9)\n};\nconfig.lib.file.dirname = function (filePath) {\n var lastpos;\n if ((lastpos = filePath.lastIndexOf("/")) != -1) {\n return filePath.substring(0, lastpos);\n } else {\n return filePath.substring(0, filePath.lastIndexOf("\s\s"));\n }\n};\nconfig.lib.file.basename = function (filePath) {\n var lastpos;\n if ((lastpos = filePath.lastIndexOf("#")) != -1) \n filePath = filePath.substring(0, lastpos);\n if ((lastpos = filePath.lastIndexOf("/")) != -1) {\n return filePath.substring(lastpos + 1);\n } else\n return filePath.substring(filePath.lastIndexOf("\s\s")+1);\n};\nwindow.basename = function() {return "@@deprecated@@";};\n//}}}\n////===\n\n////+++!![config.lib.log]\n\n//{{{\nif (!config.lib) config.lib = {};\nif (!config.lib.log) config.lib.log= {\n author: 'BidiX',\n version: {major: 0, minor: 1, revision: 0}, \n date: new Date(2006,3,9)\n};\nconfig.lib.Log = function(tiddlerTitle, logHeader) {\n if (version.major < 2)\n this.tiddler = store.tiddlers[tiddlerTitle];\n else\n this.tiddler = store.getTiddler(tiddlerTitle);\n if (!this.tiddler) {\n this.tiddler = new Tiddler();\n this.tiddler.title = tiddlerTitle;\n this.tiddler.text = "| !date | !user | !location |" + logHeader;\n this.tiddler.created = new Date();\n this.tiddler.modifier = config.options.txtUserName;\n this.tiddler.modified = new Date();\n if (version.major < 2)\n store.tiddlers[tiddlerTitle] = this.tiddler;\n else\n store.addTiddler(this.tiddler);\n }\n return this;\n};\n\nconfig.lib.Log.prototype.newLine = function (line) {\n var now = new Date();\n var newText = "| ";\n newText += now.getDate()+"/"+(now.getMonth()+1)+"/"+now.getFullYear() + " ";\n newText += now.getHours()+":"+now.getMinutes()+":"+now.getSeconds()+" | ";\n newText += config.options.txtUserName + " | ";\n var location = document.location.toString();\n var filename = config.lib.file.basename(location);\n if (!filename) filename = '/';\n newText += "[["+filename+"|"+location + "]] |";\n this.tiddler.text = this.tiddler.text + "\sn" + newText;\n this.addToLine(line);\n};\n\nconfig.lib.Log.prototype.addToLine = function (text) {\n this.tiddler.text = this.tiddler.text + text;\n this.tiddler.modifier = config.options.txtUserName;\n this.tiddler.modified = new Date();\n if (version.major < 2)\n store.tiddlers[this.tiddler.tittle] = this.tiddler;\n else {\n store.addTiddler(this.tiddler);\n story.refreshTiddler(this.tiddler.title);\n store.notify(this.tiddler.title, true);\n }\n if (version.major < 2)\n store.notifyAll(); \n};\n//}}}\n////===\n\n////+++!![config.lib.options]\n\n//{{{\nif (!config.lib) config.lib = {};\nif (!config.lib.options) config.lib.options = {\n author: 'BidiX',\n version: {major: 0, minor: 1, revision: 0}, \n date: new Date(2006,3,9)\n};\n\nconfig.lib.options.init = function (name, defaultValue) {\n if (!config.options[name]) {\n config.options[name] = defaultValue;\n saveOptionCookie(name);\n }\n};\n//}}}\n////===\n\n////+++!![PasswordTweak]\n\n//{{{\nversion.extensions.PasswordTweak = {\n major: 1, minor: 0, revision: 2, date: new Date(2006,3,11),\n type: 'tweak',\n source: 'http://tiddlywiki.bidix.info/#PasswordTweak'\n};\n//}}}\n/***\n!!config.macros.option\n***/\n//{{{\nconfig.macros.option.passwordCheckboxLabel = "Save this password on this computer";\nconfig.macros.option.passwordType = "password"; // password | text\n\nconfig.macros.option.onChangeOption = function(e)\n{\n var opt = this.getAttribute("option");\n var elementType,valueField;\n if(opt) {\n switch(opt.substr(0,3)) {\n case "txt":\n elementType = "input";\n valueField = "value";\n break;\n case "pas":\n elementType = "input";\n valueField = "value";\n break;\n case "chk":\n elementType = "input";\n valueField = "checked";\n break;\n }\n config.options[opt] = this[valueField];\n saveOptionCookie(opt);\n var nodes = document.getElementsByTagName(elementType);\n for(var t=0; t<nodes.length; t++) {\n var optNode = nodes[t].getAttribute("option");\n if (opt == optNode) \n nodes[t][valueField] = this[valueField];\n }\n }\n return(true);\n};\n\nconfig.macros.option.handler = function(place,macroName,params)\n{\n var opt = params[0];\n var size = 15;\n if (params[1])\n size = params[1];\n if(config.options[opt] === undefined) {\n return;}\n var c;\n switch(opt.substr(0,3)) {\n case "txt":\n c = document.createElement("input");\n c.onkeyup = this.onChangeOption;\n c.setAttribute ("option",opt);\n c.size = size;\n c.value = config.options[opt];\n place.appendChild(c);\n break;\n case "pas":\n // input password\n c = document.createElement ("input");\n c.setAttribute("type",config.macros.option.passwordType);\n c.onkeyup = this.onChangeOption;\n c.setAttribute("option",opt);\n c.size = size;\n c.value = config.options[opt];\n place.appendChild(c);\n // checkbox link with this password "save this password on this computer"\n c = document.createElement("input");\n c.setAttribute("type","checkbox");\n c.onclick = this.onChangeOption;\n c.setAttribute("option","chk"+opt);\n place.appendChild(c);\n c.checked = config.options["chk"+opt];\n // text savePasswordCheckboxLabel\n place.appendChild(document.createTextNode(config.macros.option.passwordCheckboxLabel));\n break;\n case "chk":\n c = document.createElement("input");\n c.setAttribute("type","checkbox");\n c.onclick = this.onChangeOption;\n c.setAttribute("option",opt);\n place.appendChild(c);\n c.checked = config.options[opt];\n break;\n }\n};\n//}}}\n/***\n!! Option cookie stuff\n***/\n//{{{\nwindow.loadOptionsCookie_orig_PasswordTweak = window.loadOptionsCookie;\nwindow.loadOptionsCookie = function()\n{\n var cookies = document.cookie.split(";");\n for(var c=0; c<cookies.length; c++) {\n var p = cookies[c].indexOf("=");\n if(p != -1) {\n var name = cookies[c].substr(0,p).trim();\n var value = cookies[c].substr(p+1).trim();\n switch(name.substr(0,3)) {\n case "txt":\n config.options[name] = unescape(value);\n break;\n case "pas":\n config.options[name] = unescape(value);\n break;\n case "chk":\n config.options[name] = value == "true";\n break;\n }\n }\n }\n};\n\nwindow.saveOptionCookie_orig_PasswordTweak = window.saveOptionCookie;\nwindow.saveOptionCookie = function(name)\n{\n var c = name + "=";\n switch(name.substr(0,3)) {\n case "txt":\n c += escape(config.options[name].toString());\n break;\n case "chk":\n c += config.options[name] ? "true" : "false";\n // is there an option link with this chk ?\n if (config.options[name.substr(3)]) {\n saveOptionCookie(name.substr(3));\n }\n break;\n case "pas":\n if (config.options["chk"+name]) {\n c += escape(config.options[name].toString());\n } else {\n c += "";\n }\n break;\n }\n c += "; expires=Fri, 1 Jan 2038 12:00:00 UTC; path=/";\n document.cookie = c;\n};\n//}}}\n/***\n!! Initializations\n***/\n//{{{\n// define config.options.pasPassword\nif (!config.options.pasPassword) {\n config.options.pasPassword = 'defaultPassword';\n window.saveOptionCookie('pasPassword');\n}\n// since loadCookies is first called befor password definition\n// we need to reload cookies\nwindow.loadOptionsCookie();\n//}}}\n////===\n\n////+++!![config.macros.upload]\n\n//{{{\nconfig.macros.upload = {\n accessKey: "U",\n formName: "UploadPlugin",\n contentType: "text/html;charset=UTF-8",\n defaultStoreScript: "store.php"\n};\n\n// only this two configs need to be translated\nconfig.macros.upload.messages = {\n aboutToUpload: "About to upload TiddlyWiki to %0",\n errorDownloading: "Error downloading",\n errorUploadingContent: "Error uploading content",\n fileNotFound: "file to upload not found",\n fileNotUploaded: "File %0 NOT uploaded",\n mainFileUploaded: "Main TiddlyWiki file uploaded to %0",\n urlParamMissing: "url param missing",\n rssFileNotUploaded: "RssFile %0 NOT uploaded",\n rssFileUploaded: "Rss File uploaded to %0"\n};\n\nconfig.macros.upload.label = {\n promptOption: "Save and Upload this TiddlyWiki with UploadOptions",\n promptParamMacro: "Save and Upload this TiddlyWiki in %0",\n saveLabel: "save to web", \n saveToDisk: "save to disk",\n uploadLabel: "upload" \n};\n\nconfig.macros.upload.handler = function(place,macroName,params){\n // parameters initialization\n var storeUrl = params[0];\n var toFilename = params[1];\n var backupDir = params[2];\n var uploadDir = params[3];\n var username = params[4];\n var password; // for security reason no password as macro parameter\n var label;\n if (document.location.toString().substr(0,4) == "http")\n label = this.label.saveLabel;\n else\n label = this.label.uploadLabel;\n var prompt;\n if (storeUrl) {\n prompt = this.label.promptParamMacro.toString().format([this.dirname(storeUrl)]);\n }\n else {\n prompt = this.label.promptOption;\n }\n createTiddlyButton(place, label, prompt, \n function () {\n config.macros.upload.upload(storeUrl, toFilename, uploadDir, backupDir, username, password); \n return false;}, \n null, null, this.accessKey);\n};\nconfig.macros.upload.UploadLog = function() {\n return new config.lib.Log('UploadLog', " !storeUrl | !uploadDir | !toFilename | !backupdir | !origin |" );\n};\nconfig.macros.upload.UploadLog.prototype = config.lib.Log.prototype;\nconfig.macros.upload.UploadLog.prototype.startUpload = function(storeUrl, toFilename, uploadDir, backupDir) {\n var line = " [[" + config.lib.file.basename(storeUrl) + "|" + storeUrl + "]] | ";\n line += uploadDir + " | " + toFilename + " | " + backupDir + " |";\n this.newLine(line);\n};\nconfig.macros.upload.UploadLog.prototype.endUpload = function() {\n this.addToLine(" Ok |");\n};\nconfig.macros.upload.basename = config.lib.file.basename;\nconfig.macros.upload.dirname = config.lib.file.dirname;\nconfig.macros.upload.upload = function(storeUrl, toFilename, uploadDir, backupDir, username, password)\n{\n // parameters initialization\n storeUrl = (storeUrl ? storeUrl : config.options.txtUploadStoreUrl);\n toFilename = (toFilename ? toFilename : config.options.txtUploadFilename);\n backupDir = (backupDir ? backupDir : config.options.txtUploadBackupDir);\n uploadDir = (uploadDir ? uploadDir : config.options.txtUploadDir);\n username = (username ? username : config.options.txtUploadUserName);\n password = config.options.pasUploadPassword; // for security reason no password as macro parameter\n if (storeUrl === '') {\n config.macros.upload.defaultStoreScript;\n }\n if (config.lib.file.dirname(storeUrl) === '') {\n storeUrl = config.lib.file.dirname(document.location.toString())+'/'+storeUrl;\n }\n if (toFilename === '') {\n toFilename = config.lib.file.basename(document.location.toString());\n }\n\n clearMessage();\n // only for forcing the message to display\n if (version.major < 2)\n store.notifyAll();\n if (!storeUrl) {\n alert(config.macros.upload.messages.urlParamMissing);\n return;\n }\n \n var log = new this.UploadLog();\n log.startUpload(storeUrl, toFilename, uploadDir, backupDir);\n if (document.location.toString().substr(0,5) == "file:") {\n saveChanges();\n }\n displayMessage(config.macros.upload.messages.aboutToUpload.format([this.dirname(storeUrl)]), this.dirname(storeUrl));\n this.uploadChanges(storeUrl, toFilename, uploadDir, backupDir, username, password);\n if(config.options.chkGenerateAnRssFeed) {\n //var rssContent = convertUnicodeToUTF8(generateRss());\n var rssContent = generateRss();\n var rssPath = toFilename.substr(0,toFilename.lastIndexOf(".")) + ".xml";\n this.uploadContent(rssContent, storeUrl, rssPath, uploadDir, '', username, password, \n function (responseText) {\n if (responseText.substring(0,1) != '0') {\n displayMessage(config.macros.upload.messages.rssFileNotUploaded.format([rssPath]));\n }\n else {\n if (uploadDir) {\n rssPath = uploadDir + "/" + config.macros.upload.basename(rssPath);\n } else {\n rssPath = config.macros.upload.basename(rssPath);\n }\n displayMessage(config.macros.upload.messages.rssFileUploaded.format(\n [config.macros.upload.dirname(storeUrl)+"/"+rssPath]), config.macros.upload.dirname(storeUrl)+"/"+rssPath);\n }\n // for debugging store.php uncomment last line\n //DEBUG alert(responseText);\n });\n }\n return;\n};\n\nconfig.macros.upload.uploadChanges = function(storeUrl, toFilename, uploadDir, backupDir, \n username, password) {\n var original;\n if (document.location.toString().substr(0,4) == "http") {\n original = this.download(storeUrl, toFilename, uploadDir, backupDir, username, password);\n return;\n }\n else {\n // standard way : Local file\n \n original = loadFile(getLocalPath(document.location.toString()));\n if(window.Components) {\n // it's a mozilla browser\n try {\n netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");\n var converter = Components.classes["@mozilla.org/intl/scriptableunicodeconverter"]\n .createInstance(Components.interfaces.nsIScriptableUnicodeConverter);\n converter.charset = "UTF-8";\n original = converter.ConvertToUnicode(original);\n }\n catch(e) {\n }\n }\n }\n //DEBUG alert(original);\n this.uploadChangesFrom(original, storeUrl, toFilename, uploadDir, backupDir, \n username, password);\n};\n\nconfig.macros.upload.uploadChangesFrom = function(original, storeUrl, toFilename, uploadDir, backupDir, \n username, password) {\n var startSaveArea = '<div id="' + 'storeArea">'; // Split up into two so that indexOf() of this source doesn't find it\n var endSaveArea = '</d' + 'iv>';\n // Locate the storeArea div's\n var posOpeningDiv = original.indexOf(startSaveArea);\n var posClosingDiv = original.lastIndexOf(endSaveArea);\n if((posOpeningDiv == -1) || (posClosingDiv == -1))\n {\n alert(config.messages.invalidFileError.format([document.location.toString()]));\n return;\n }\n var revised = original.substr(0,posOpeningDiv + startSaveArea.length) + \n allTiddlersAsHtml() + "\sn\st\st" +\n original.substr(posClosingDiv);\n var newSiteTitle;\n if(version.major < 2){\n newSiteTitle = (getElementText("siteTitle") + " - " + getElementText("siteSubtitle")).htmlEncode();\n } else {\n newSiteTitle = (wikifyPlain ("SiteTitle") + " - " + wikifyPlain ("SiteSubtitle")).htmlEncode();\n }\n revised = revised.replace(new RegExp("<title>[^<]*</title>", "im"),"<title>"+ newSiteTitle +"</title>");\n var response = this.uploadContent(revised, storeUrl, toFilename, uploadDir, backupDir, \n username, password, function (responseText) {\n if (responseText.substring(0,1) != '0') {\n alert(responseText);\n displayMessage(config.macros.upload.messages.fileNotUploaded.format([getLocalPath(document.location.toString())]));\n }\n else {\n if (uploadDir !== '') {\n toFilename = uploadDir + "/" + config.macros.upload.basename(toFilename);\n } else {\n toFilename = config.macros.upload.basename(toFilename);\n }\n displayMessage(config.macros.upload.messages.mainFileUploaded.format(\n [config.macros.upload.dirname(storeUrl)+"/"+toFilename]), config.macros.upload.dirname(storeUrl)+"/"+toFilename);\n var log = new config.macros.upload.UploadLog();\n log.endUpload();\n store.setDirty(false);\n }\n // for debugging store.php uncomment last line\n //DEBUG alert(responseText);\n }\n );\n};\n\nconfig.macros.upload.uploadContent = function(content, storeUrl, toFilename, uploadDir, backupDir, \n username, password, callbackFn) {\n var boundary = "---------------------------"+"AaB03x"; \n var request;\n try {\n request = new XMLHttpRequest();\n } \n catch (e) { \n request = new ActiveXObject("Msxml2.XMLHTTP"); \n }\n if (window.netscape){\n try {\n if (document.location.toString().substr(0,4) != "http") {\n netscape.security.PrivilegeManager.enablePrivilege('UniversalBrowserRead');}\n }\n catch (e) { }\n } \n //DEBUG alert("user["+config.options.txtUploadUserName+"] password[" + config.options.pasUploadPassword + "]");\n // compose headers data\n var sheader = "";\n sheader += "--" + boundary + "\sr\snContent-disposition: form-data; name=\s"";\n sheader += config.macros.upload.formName +"\s"\sr\sn\sr\sn";\n sheader += "backupDir="+backupDir\n +";user=" + username \n +";password=" + password\n +";uploaddir=" + uploadDir\n + ";;\sr\sn"; \n sheader += "\sr\sn" + "--" + boundary + "\sr\sn";\n sheader += "Content-disposition: form-data; name=\s"userfile\s"; filename=\s""+toFilename+"\s"\sr\sn";\n sheader += "Content-Type: " + config.macros.upload.contentType + "\sr\sn";\n sheader += "Content-Length: " + content.length + "\sr\sn\sr\sn";\n // compose trailer data\n var strailer = new String();\n strailer = "\sr\sn--" + boundary + "--\sr\sn";\n var data;\n data = sheader + content + strailer;\n //request.open("POST", storeUrl, true, username, password);\n request.open("POST", storeUrl, true);\n request.onreadystatechange = function () {\n if (request.readyState == 4) {\n if (request.status == 200)\n callbackFn(request.responseText);\n else\n alert(config.macros.upload.messages.errorUploadingContent);\n }\n };\n request.setRequestHeader("Content-Length",data.length);\n request.setRequestHeader("Content-Type","multipart/form-data; boundary="+boundary);\n request.send(data); \n};\n\n\nconfig.macros.upload.download = function(uploadUrl, uploadToFilename, uploadDir, uploadBackupDir, \n username, password) {\n var request;\n try {\n request = new XMLHttpRequest();\n } \n catch (e) { \n request = new ActiveXObject("Msxml2.XMLHTTP"); \n }\n try {\n if (uploadUrl.substr(0,4) == "http") {\n netscape.security.PrivilegeManager.enablePrivilege("UniversalBrowserRead");\n }\n else {\n netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");\n }\n } catch (e) { }\n //request.open("GET", document.location.toString(), true, username, password);\n request.open("GET", document.location.toString(), true);\n request.onreadystatechange = function () {\n if (request.readyState == 4) {\n if(request.status == 200) {\n config.macros.upload.uploadChangesFrom(request.responseText, uploadUrl, \n uploadToFilename, uploadDir, uploadBackupDir, username, password);\n }\n else\n alert(config.macros.upload.messages.errorDownloading.format(\n [document.location.toString()]));\n }\n };\n request.send(null);\n};\n\n//}}}\n////===\n\n////+++!![Initializations]\n\n//{{{\nconfig.lib.options.init('txtUploadStoreUrl','store.php');\nconfig.lib.options.init('txtUploadFilename','');\nconfig.lib.options.init('txtUploadDir','');\nconfig.lib.options.init('txtUploadBackupDir','');\nconfig.lib.options.init('txtUploadUserName',config.options.txtUserName);\nconfig.lib.options.init('pasUploadPassword','');\nconfig.shadowTiddlers.UploadPluginDoc = "[[Full Documentation|http://tiddlywiki.bidix.info/l#UploadPluginDoc ]]\sn"; \n\n\n//}}}\n////===\n\n////+++!![Core Hijacking]\n\n//{{{\nconfig.macros.saveChanges.label_orig_UploadPlugin = config.macros.saveChanges.label;\nconfig.macros.saveChanges.label = config.macros.upload.label.saveToDisk;\n\nconfig.macros.saveChanges.handler_orig_UploadPlugin = config.macros.saveChanges.handler;\n\nconfig.macros.saveChanges.handler = function(place)\n{\n if ((!readOnly) && (document.location.toString().substr(0,4) != "http"))\n createTiddlyButton(place,this.label,this.prompt,this.onClick,null,null,this.accessKey);\n}\n\n//}}}\n////===
<div class='toolbar' macro='toolbar -closeTiddler closeOthers +editTiddler references permalink jump'></div>\n<div class='title' macro='view title'></div>\n<div class='subtitle'><span macro='view modifier link'></span><br><span macro='view created date [[DD MMM YYYY]]'></span>, modified <span macro='view modified date [[DD MMM YYYY]]'></span></div>\n<div class='tagging' macro='tagging'></div>\n<div class='tagged' macro='tags'></div>\n<div class='viewer' macro='view text wikified'></div>\n<div class='tagClear'></div>
Welcome to Infinite. It is based on [[d³|http://dcubed.ca/]] where you can see what a typical installation of this wiki looks like. I have installed additional plugins and done extensive modifications to the stylesheet being used here.\n\nIf you would like an introductory tour of a typical Tiddlyspot workspace, you should start [[here|http://www.tiddlyspot.com/]]. I also recommend reading the [[tutorial|http://www.blogjones.com/TiddlyWikiTutorial.html]] which covers [[Tiddlywiki|http://www.tiddlywiki.com/]] in general. For help with formatting text, see TextHelp.\n\nThis document is a ~TiddlyWiki from tiddlyspot.com. A ~TiddlyWiki is an electronic notebook that is great for managing todo lists, personal information, and all sorts of things.\nFind out more about ~TiddlyWiki at [[TiddlyWiki.com|http://tiddlywiki.com]]. Also visit [[TiddlyWiki Guides|http://tiddlywikiguides.org]] for documentation on learning and using ~TiddlyWiki. New users are especially welcome on the [[TiddlyWiki mailing list|http://groups.google.com/group/TiddlyWiki]], which is an excellent place to ask questions and get help.\n\n@@font-weight:bold;font-size:1.3em;color:#444; //Settings// &nbsp;&nbsp;@@Make sure you enter your password here.\n<<tiddler tiddlyspotControls>>\n@@font-weight:bold;font-size:1.3em;color:#444; //Working online// &nbsp;&nbsp;@@ You can edit this ~TiddlyWiki right now, and save your changes using the "save to web" button in the column on the right.\n\n@@font-weight:bold;font-size:1.3em;color:#444; //Working offline// &nbsp;&nbsp;@@ A fully functioning copy of this ~TiddlyWiki can be saved onto your hard drive or USB stick. You can make changes and save them locally without being connected to the Internet. When you're ready to sync up again, just click "upload" and your ~TiddlyWiki will be saved back to tiddlyspot.com.\n\n@@font-weight:bold;font-size:1.3em;color:#444; //Enjoy!// &nbsp;&nbsp;@@ We hope you like using your tiddlyspot.com site. Please email [[feedback@tiddlyspot.com|mailto:feedback@tiddlyspot.com]] with any comments.
Brzezinski and his protégé, [[Zalmay Khalilzad]], set up a corporation in 1985, funded by the US Congress, to train the [[Mujahedeen]] to sell reporters the lie that the mujahedeen were freedom fighters and victims of aggression.\n\nIn Afghanistan (as Brzezinski proudly [[states|http://emperors-clothes.com/interviews/brz.htm]]) and then in Bosnia, the US sponsored Muslim terror even as the State Department was officially condemning it. Because ordinary people would never support such a policy, it was sold to the public as support for freedom fighters (Afghanistan) or as defense of abused Muslims (Bosnia.)\n\nBy the late 1980s Brzezinski's protégé, Prof. Zalmay Khalilzad, was the top strategist of the Afghan war.\n\nUnder the administration of Bush, Sr., Khalilzad was in charge of strategy at the Pentagon. We have substantial evidence that it was under Bush, Sr., not Clinton, that the US began assisting the mujahedeen in Bosnia.\n\nSo, in both cases, we have Brzezinski's protégé directing the use of Muslim extremism as a weapon against a secular state, with the media misrepresenting the nature of the fight. The Brzezinski Doctrine in action.\n\n----\n\nBrzezinski's Interview with Le Nouvel Observateur\n<<<\nLe Nouvel Observateur: Former CIA director [[Robert Gates]] states in his memoirs: The American secret services began six months before the Soviet intervention to support the Mujahedeen [in Afghanistan]. At that time you were president Carter's security advisor; thus you played a key role in this affair. Do you confirm this statement?\n\nZbigniew Brzezinski: Yes. According to the official version, the CIA's support for the Mujahedeen began in 1980, i.e. after the Soviet army's invasion of Afghanistan on 24 December 1979. But the reality, which was kept secret until today, is completely different: Actually it was on 3 July 1979 that president Carter signed the first directive for the secret support of the opposition against the pro-Soviet regime in Kabul. And on the same day I wrote a note, in which I explained to the president that this support would in my opinion lead to a military intervention by the Soviets.\n\nLe Nouvel Observateur: Despite this risk you were a supporter of this covert action? But perhaps you expected the Soviets to enter this war and tried to provoke it?\n\nZbigniew Brzezinski: It's not exactly like that. We didn't push the Russians to intervene but we knowingly increased the probability that they would do it.\n\nLe Nouvel Observateur: When the Soviets justified their intervention with the statement that they were fighting against a secret US interference in Afghanistan, nobody believed them. Nevertheless there was a core of truth to this...Do you regret nothing today?\n\nZbigniew Brzezinski: Regret what? This secret operation was an excellent idea. It lured the Russians into the Afghan trap, and you would like me to regret that? On the day when the Soviets officially crossed the border, I wrote president Carter, in essence: "We now have the opportunity to provide the USSR with their Viet Nam war." Indeed for ten years Moscow had to conduct a war that was intolerable for the regime, a conflict which involved the demoralization and finally the breakup of the Soviet Empire.\n\nLe Nouvel Observateur: And also, don't you regret having helped future terrorists, having given them weapons and advice?\n\nZbigniew Brzezinski: What is most important for world history? The [[Taliban]] or the fall of the Soviet Empire? Some Islamic hotheads or the liberation of Central Europe and the end of the cold war?\n\nLe Nouvel Observateur: "Some hotheads?" But it has been said time and time again: today Islamic fundamentalism represents a world-wide threat...\n\nZbigniew Brzezinski: Rubbish! It's said that the West has a global policy regarding Islam. That's hogwash: there is no global Islam. Let's look at Islam in a rational and not a demagogic or emotional way. It is the first world religion with 1.5 billion adherents. But what is there in common between fundamentalist Saudi Arabia, moderate Morocco, militaristic Pakistan, pro-Western Egypt and secularized Central Asia? Nothing more than that which connects the Christian countries...\n<<<\n----\n\nIn this excerpt, the NY Times confirms that Khalilzad was head of policy planning at the Pentagon under Bush Sr.\n\n [Excerpt from NY Times]\n<<<\n Pentagon Seeking to Cut Military But Equip It for 2 Regional Wars\n The New York Times September 2, 1993, Thursday, Late Edition - Final SECTION: Section A; Page 1; Column 1; National Desk "Pentagon Seeking to Cut Military But Equip It for 2 Regional Wars" By Michael R. Gordon, Special To The New York Times Dateline: Washington, Sept. 1\n\n '... It was tough enough to carry out the win-win strategy [i.e., fighting two regional wars at once and winning both -EC] with the forces envisioned by the Bush Administration,' said Zalmay Khalilzad, the ''head of Pentagon's office of policy planning in the Bush Administration'' and an analyst with the Rand Corporation. 'The question is can they really do win-win with a reduced forced structure. ...'\n<<<\n\n[Excerpt from Address by Zalmay Khalilzad]\n\nGiven at the Los Angeles World Affairs Council on March 9, 2000 * Dr. Zalmay Khalilzad Director of Strategy and Doctrine Program Project Air Force The RAND Corporation\nhttp://www.lawac.org/speech/khalilzad.html\n<<<\n"As I said before, the war [between Northern Alliance and Taliban] goes on, the polarization that I talked about before continues, with the northern alliance being supported by Iran, Russia, India, and the Central Asian republics. The question is, in addition to terrorism, in addition to the violation of rights of the Afghans, the role of Pakistan, what other challenges does Afghanistan pose? I will highlight three others. One is that Afghanistan now has become the world's number one producer of [[opium]]. The [[narcotics]] production and [[trafficking]] is a main source of revenue throughout the world. \n\nTwo, Afghanistan is impacting the stability of and the prospects for the newly independent Central Asian states. Afghanistan was and is a possible corridor for the export of oil and gas from the Central Asian states down to Pakistan and to the world. A California company called Unocal was interested in exploring that option, but because of the war in Afghanistan, because of the instability that's there, those options, or that option at least, has not materialized. [Because of ] [t]he absence of alternative options for the Central Asian states, and the fear that the Central Asians have of the potential spread of Islamic extremism - as exemplified by the Taliban and the fact that I mentioned before that Afghanistan has become a central place for the training and spread of such movements - Central Asia has become an arena where Russia is reasserting increasingly its influence and role. In addition, there is the danger that the Taliban is going to increase and spread to reach out of Afghanistan and spread to places like Pakistan.\n<<<\n----\n\n*[[Photo of Zbigniew Brzezinski and Tim Osman (Osama bin Laden)|http://valis.gnn.tv/blogs/13924/Photo_Zbigniew_Brzezinski_Tim_Osman]]\n*[[Brzezinski Terror Doctrine Strikes the Caucasus|http://kurtnimmo.com/?p=62]]
<div class='toolbar' macro='toolbar +saveTiddler -cancelTiddler deleteAction'></div>\n<div class='title' macro='view title'></div>\n<div class='editor' macro='edit title'></div>\n<div class='editor' macro='edit text'></div>\n<div class='editor' macro='edit tags'></div><div class='editorFooter'><span macro='message views.editor.tagPrompt'></span><span macro='tagChooser'></span></div>
<div class='toolbar' macro='toolbar changeContext projectify -closeTiddler closeOthers +editTiddler permalink references jump'></div>\n<div class='title' macro='view title'></div>\n<div class='subtitle'><span macro='view modifier link'></span>, <span macro='view modified date [[DD MMM YYYY]]'></span> (created <span macro='view created date [[DD MMM YYYY]]'></span>)&nbsp;<span macro='gtdActionCompleted'></span>complete</div>\n<div class='tagging' macro='tagging'></div>\n<div class='tagged' macro='tags'></div>\n<div class='viewer' macro='view text wikified'></div>\n<div class='tagClear'></div><div macro='newReminder'></div>
''Bin Laden's Magic Carpet - Secret U.S. PROMIS Software''\n\n//FBI/Justice Claims of Discontinued Use Leave Questions Unanswered \nBritain and Germany in the Lurch?//\n\nDid bin Laden Use It To Break White House Codes And Threaten Air Force One?\n\nby\n[[Michael C. Ruppert|http://www.fromthewilderness.com/free/ww3/11_19_01_magic_carpet.html]]\n\n[© Copyright 2001, Michael C. Ruppert and From The Wilderness Publications, www.copvcia.com. All Rights Reserved. May be recopied or distributed for non-profit purposes only. May NOT be posted on any commercial or ".com" website without prior written authorization. Violations subject to legal action.] \n\nFTW, October 26, 2001 - 1300 PDT (UPDATED Nov. 16, 2001) - An October 16 FOX News report by correspondent Carl Cameron indicating that convicted spy, former FBI Agent [[Robert Hanssen]], had provided a highly secret computer software program called [[PROMIS]] to Russian organized crime figures - who in turn reportedly sold it to [[Osama bin Laden]] - may signal a potential intelligence disaster for the United States. Admissions by the FBI and Justice in the FOX story that they have discontinued use of the software are most certainly a legal disaster for a government that has been engaged in a 16-year battle with the software's creator, [[Bill Hamilton]], CEO of the [[Inslaw|inslaw]] Corporation. Over those 16 years, in response to lawsuits filed by Hamilton charging that the government had stolen the software from Inslaw, the [[FBI]], the [[CIA]] and the [[Department of Justice]] have denied, in court and under oath, ever using the software.\n\nBin Laden's reported possession of Promis software was clearly reported in a June 15, 2001 story by Washington Times reporter Jerry Seper. That story went unnoticed by the major media. In it Seper wrote, "The software delivered to the Russian handlers and later sent to bin Laden, according to sources, is believed to be an upgraded version of a program known as Promis - developed in the 1980s by a Washington firm, [[Inslaw, Inc.|inslaw]], to give attorneys the ability to keep tabs on their caseloads. It would give bin Laden the ability to monitor U.S. efforts to track him down, federal law-enforcement officials say. It also gives him access to databases on specific targets of his choosing and the ability to monitor electronic-banking transactions, easing money-laundering operations for himself or others, according to sources."\n\nIn a series of excellent stories by The Times, and as confirmed by parts of the FOX broadcast, it appears that Hanssen, who was arrested in February, in order to escape the death penalty this summer, agreed to provide the FBI and other intelligence agencies with a full accounting of his sale of Promis overseas. Reports state that almost until the moment of his capture, Hanssen was charged with "repairing" and upgrading versions of the software used by Britain and Germany.\n\nOn October 17, two different spokespersons at the FBI's Office of Public Affairs told FTW, "The FBI has discontinued use of the Promis software." The spokespersons declined to give their names.\n\nOn October 24, Department of Justice spokesperson Loren Pfeifle declined to answer any questions about where, when or how Promis had been used and would say only, "I can only confirm that the [[DOJ]] has discontinued use of the program."\n\nINSLAW had two limited contracts to provide Promis to Justice in 1982 and 1983. Neither application had anything to do with tracking terrorist activities. Hamilton's suits charged that Reagan Administration officials, including [[Edwin Meese]], pirated the software, modified it for intelligence and financial uses and made millions by selling it to the governments of Israel, Canada, Great Britain, Germany and other friendly nations. After the installation of a CIA-created "back door" into the program, Israel, using its lifelong Mossad agent [[Robert Maxwell]], reportedly sold the software to "unfriendly" nations and then secretly retrieved priceless intelligence data.\n\nThe statements of FBI and Justice sources in the FOX story on October 16 have made Hamilton's case. They also give but the barest hint of the security breaches that may now be helping the most wanted man in the world. Bin Laden's reported possession of Promis may also explain the alleged threatening messages that were received by President Bush while aboard Air Force One on September 11th.\n\nA mild uproar erupted in the days after the WTC attacks when Presidential aide [[Karl Rove]] indicated that threatening calls had been placed to Air Force One just hours after the attacks while [[President Bush|george-w-bush]] was onboard. Some journalists excoriated Rove for suggested that bin Laden might have a mole in the White House who could have given him the secure codes to reach the aircraft in flight.\n\nBin Laden's possession of Promis would provide a possible explanation. According to [[Hamilton|bill-hamilton]], under the right circumstances, Promis could have enabled the threatening calls to be made. "I have no way of knowing whether any Promis-related base has dial-up access to Air Force One. But if that happens, and if you have Promis, it's a straight-forward thing to do. But one would still need to have access to the targeting computer.\n\n"There is a central locator system to track members of the [[National Command Authority]] 24/7. If that is a database created with Promis and if anyone had access you could do it."\n\nSuch a penetration using Promis might also explain why Vice President [[Dick Cheney|dick-cheney]] was hurriedly whisked out of sight and reportedly taken to a secure underground facility, where he reportedly works to this day. Cheney's prolonged absences from the public eye would also be explained by such a breach of security.\n\nNumerous news stories, books and investigative reports, including a September 2000 story in FTW (Vol. III, No.7), spanning nearly two decades, have established that Promis holds unique abilities to track terrorists. The software has also, according to numerous sources including Hamilton, been modified with artificial intelligence and developed in parallel for the world's banking systems to track money movements, stock trades and other financial dealings. [[Systematics]] - since purchased by [[Alltel]] - an Arkansas financial and technical firm headed by billionaire [[Jackson Stephens]], has often been reported as the primary developer of Promis for financial intelligence use. Systematics through its various evolutions had been a primary supplier of software used in inter-bank and international money transfers for many years. Attorneys who have been connected to Systematics and Promis include [[Webster Hubbell]], [[Hillary Clinton]] and the late [[Vince Foster]].\n\nIf true, and if claims by the FBI and the Department of Justice that they have "recently" discontinued the use of Promis are accurate, the likelihood than bin Laden may have compromised the systems the U.S. government and its allies use to track him is high. Additional information in the FOX broadcast indicating that Britain stopped using the software just three months ago and that Germany stopped using the software just weeks ago are equally disturbing. These are mission-critical systems requiring years of development. What has replaced them? And even if the U.S. government has replaced the software given to its allies with newer programs - several of which FTW knows to be in existence - the FOX report clearly implies that bin Laden and Associates have had ample time to get highly secret intelligence data from both Britain and Germany. Those systems might, in turn, have compromised U.S. systems. The WTC attacks had - by all reckoning - been in the works for years, and bin Laden would certainly have known that the U.S. would be looking for him afterwards.\n\n''WHAT IS PROMIS AND WHAT DOES IT DO?''\n\nPROMIS stands for Prosecutor's Management Information System.\n\nIn the late 1970s the legal system of the United States Department of Justice ([[DOJ]]) was comprised of more than thirty semi-autonomous regional U.S. Attorneys (USA) offices. Each had a computer system to track case management for prosecutions, investigations, and civil litigations. The problem was that they used as many as seven different programming languages. This made the transmission and sharing of information between offices virtually impossible. The computers in the USA's office in San Francisco could not read files sent from the USA in New York.\n\nThe genius of Hamilton and Inslaw was to create a software program that could access files in any number of databases and programming languages and translate and then unify them into one consistent file. Promis was the Rosetta stone of computer languages.\n\n[[Inslaw|inslaw]] won a $10 million, three-year contract in March 1982 to install a 16-bit architecture version of [[Promis|PROMIS]], which the government had the right to use but not the right to modify without paying license fees to Inslaw, on government computers in the 22 largest U.S. Attorneys' Offices. In April 1983, the second year of the three-year contract, the government modified Inslaw's contract in order to obtain delivery of a 32-bit architecture version of Promis, which the government could not even use without paying license fees. In modifying the contract, the government promised to pay license fees if it decided to substitute the 32-bit version for the 16-bit version. In May 1983, the month following Inslaw's delivery of the 32-bit version of Promis, the government reneged on its contractual agreement to pay license fees and simultaneously began to find fault with Inslaw's implementation services as justification for withholding services payments.\n\nThe Justice Department thereafter withheld $1.77 million in services payments forcing Inslaw to file for Chapter 11 bankruptcy protection in February 1985.\n\nIn January 1988, following several weeks of trial in 1987, the U.S. Bankruptcy Court issued fully litigated findings of fact that the Justice Department "took, converted, stole" the 32-bit version of Promis "through trickery, fraud and deceit," implemented the 32-bit version of Promis in the 44 largest U.S. Attorneys Offices, and then tried to force INSLAW out of business in order to incapacitate INSLAW from litigating the Justice Department's theft of Promis. The Bankruptcy Court imposed a compulsory license on the 44 largest U.S. Attorneys Offices for the perpetual use of the 32-bit version of Promis and issued a permanent injunction against any further dissemination of Promis by the government except under license from Inslaw.\n\nSubsequent appeals by the government saw the original rulings overturned on legal, not factual, grounds. Legal actions in the case continue to this day.\n\nHamilton told FTW that none of the uses described above had anything to do with any licensing agreements for the software's use to track terrorists, intelligence matters or worldwide financial transactions.\n\nThe paper tracking of the refinements in Promis after the legal dispute erupted between INSLAW and the [[Reagan|ronald-reagan]] administration, verifies that at least one version of Promis was given to [[Martin Marietta]], now [[Lockheed-Martin]], which is now the nation's second largest defense contractor. Until late 2000, [[Lynne Cheney]], the wife of Vice President [[Dick Cheney]] sat on Lockheed's board of directors. Research conducted by many investigative journalists has indicated that Promis has spread widely throughout the defense contractor network. FTW has received multiple reports of Promis use by companies and institutions like [[DynCorp]], [[Raytheon]], [[Boeing]], [[SAIC]] and the [[Harvard Endowment]] as well as by government agencies such as the Financial Criminal Enforcement Network ([[FINCEN]]) and the U.S. Treasury.\n\n''Here's how powerful the software is.''\n\nApproximately two weeks after the September 11 attacks on the World Trade Center and the Pentagon, the History Channel aired a documentary entitled "The History of Terrorism." In that documentary, a law enforcement officer described some of the methods used to track terrorist movements. He stated that "computers" were able to track such things as credit card purchases, entry and exits visas, telephone and utility usage etc. It was implied that these diverse data base files could be integrated into one unified table. He gave an example that through the use of such a system it would be possible to determine that if a suspected terrorist entered the country and was going to hide out, that by monitoring the water and electrical consumption of all possible suspects in a given cell, it would be possible to determine where the terrorist was hiding out by seeing whose utility use increased. Conversely, it would be possible to determine if a terrorist was on the move if his utility consumption declined or his local shopping patterns were interrupted. Aren't those "club" cards from your supermarket handy?\n\nThis is but the barest glimpse of what Promis can do. Mated with artificial intelligence it is capable of analyzing not only an individual's, but also a community's entire life, in real time. It is also capable of issuing warnings when irregularities appear and of predicting future movements based upon past behavior.\n\nIn the financial arena Promis is even more formidable. Not only is it capable of predicting movements in financial markets and tracking trades in real time. It has been reported, on a number of occasions, to have been used, via the "back door" to enter secret bank accounts, including accounts in Switzerland ([[SWIFT]]) and then remove the money in those accounts without being traced. Court documents filed in the various INSLAW trials include documentation of this ability as well as affidavits and declarations from Israeli intelligence officers and assets.\n\nThe one essential weakness of Promis is that it must be physically installed on a targeted computer for it to be effective. Hence, if Osama bin Laden is able to penetrate a U.S. Government system it must mean that Promis is there.\n\nFTW has previously reported that the CIA uses Promis to track stock trades in real time. Thus, as described in FTW stories on insider trading directly connected to the September 11 attacks, the Agency had the ability to determine that immediate impending attacks were planned against both American and United Air Lines. The Israeli [[Herzliyya Institute for Counterterrorism]] was able to publish a detailed accounting of the trades within days of the attacks and their report underscores the connection between counterterrorist efforts and the monitoring of financial markets. [See FTW Vol. IV, No 7 - Oct. 15, 2001] Suspicions of CIA advance knowledge of the attacks were heightened when FTW disclosed that the current Executive Director of the CIA, [[A.B. "Buzzy" Krongard]] was, until 1998, the CEO of [[A.B. Brown]], the company which handled many of the suspicious trades.\n\nAll of these abilities were a given when this writer met with members of the [[RCMP]] National Security Investigation Section in the summer of 2000. Our meetings were reported in the Toronto Star and are described in the previously referenced issue of FTW. A key question that lingered after the meetings with the RCMP was how many versions of the software had the CIA and the U.S. government given out and might they not have been also using a back door against "friendly" nations for economic motives to give advantage to U.S. companies. It was not a question that the RCMP dismissed as unlikely.\n\nIn another mind boggling development, on November 10 The Calgary Sun reported: U.S. police said many of the suspected al-Qaida terrorists were nabbed through the use of a state-of-the-art computer software program called [[Promis|PROMIS]]. The system interfaces with any database and can provide information on credit card, banking, pension, tax, criminal and immigration records. Police can input an alleged terrorist name or credit card and the software will provide details of the person's movements through purchases or phone records. After so many years of denials these public confirmations that Promis is widely in use must come as a relief to Hamilton who now can walk into court and reopen his case. But they also indicate that newer generations of software have likely replaced the legendary program that has been connected with so much death, intrigue and mystery.\n\nThe FOX story reported that Osama bin Laden once boasted that his youth "//knew the wrinkles of the world's financial markets like the back of their hands and that his money would never be frozen//." He may be right. And an administration so lost in covering up criminal conduct - no less than the conduct of the ones which preceded it -- while trying to fight a war at the same time -- might find itself doubly wounded by the software of Bill Hamilton and Inslaw.\n\nSuggested Reading:\n\n- The Washington Times - Search Archives for "Promis"\n\n- Insight Magazine - a four part [[series|http://www.insightmag.com/archive/200101307.shtml]] by investigative reporter Kelly O'Meara. If the link is broken, do an archive search from their [[main web page|http://www.insightmagazine.com/]]. \n\n- [[The Last Circle|http://www.lycaeum.org/books/books/last_circle/]] - An online e-book by Carol Marshall.\n\n- "Trail of The Octopus" - by Lester Coleman, 1993, Bloomsbury Publishing, London. This book is almost impossible to find and FTW is unable to direct readers to a good source for obtaining it.\n\n- [[The Inslaw Affair|inslaw]] - Includes Congressional testimony supporting Inslaw and a record of court proceedings.\n\n- [[FTW: Vol. IV, No 7 - Oct. 15, 2001|http://www.fromthewilderness.com/free/pandora/052401_promis.html]]
<div class='toolbar' macro='toolbar +saveTiddler -cancelTiddler deleteContext'></div>\n<div class='title' macro='view title'></div>\n<div class='editor' macro='edit title'></div>\n<div class='editor' macro='edit text'></div>\n<div class='editor' macro='edit tags'></div><div class='editorFooter'><span macro='message views.editor.tagPrompt'></span><span macro='tagChooser'></span></div>
<div class='toolbar' macro='toolbar newAction -closeTiddler closeOthers +editTiddler permalink references jump'></div>\n<div class='title' macro='view title'></div>\n<div class='subtitle'><span macro='view modifier link'></span>, <span macro='view modified date [[DD MMM YYYY]]'></span> (created <span macro='view created date [[DD MMM YYYY]]'></span>)</div>\n<div class='tagged' macro='tags'></div>\n<div class='viewer' macro='view text wikified'></div>\n<div class='tagClear'></div>
What makes the golden ratio special is the number of mathematical properties it possesses. The golden ratio is the only number whose square can be produced simply by adding 1 and whose reciprocal by subtracting 1. If you take a golden rectangle - one whose length-to-breadth is in the golden ratio - and snip out a square, what remains is another, smaller golden rectangle. \n\nThe golden ratio is also difficult to pin down: it's the most difficult to express as any kind of fraction and its digits - 10 million of which were computed in 1996 - never repeat. \n\nIt's [[infinite]]; also see [[infinite play|http://infiniteplaythemovie.com/]].
The words 'infinite' or 'infinity' come from the Latin //infinitas// or "unboundedness." It refers to several distinct concepts which arise in theology, philosophy, mathematics and everyday life. Popular or colloquial usage of the term often does not accord with its more technical meanings. -- [[Wikipedia|http://en.wikipedia.org/wiki/Infinity]]
<div class='toolbar' macro='toolbar +saveTiddler -cancelTiddler deleteProject deleteProjectAll'></div>\n<div class='title' macro='view title'></div>\n<div class='editor' macro='edit title'></div>\n<div class='editor' macro='edit text'></div>\n<div class='editor' macro='edit tags'></div><div class='editorFooter'><span macro='message views.editor.tagPrompt'></span><span macro='tagChooser'></span></div>
<div class='toolbar' macro='toolbar newProjectAction -closeTiddler closeOthers +editTiddler permalink references jump'></div>\n<div class='title' macro='view title'></div>\n<div class='subtitle'><span macro='view modifier link'></span>, <span macro='view modified date [[DD MMM YYYY]]'></span> (created <span macro='view created date [[DD MMM YYYY]]'></span>)</div>\n<div class='tagged' macro='tags'></div>\n<div class='viewer' macro='view text wikified'></div>\n<div class='tagClear'></div>
| tiddlyspot password:|<<option pasUploadPassword>>|\n| site management:|<<upload http://infinite.tiddlyspot.com/store.cgi index.html . . infinite>>//(requires tiddlyspot password)//<<br>>[[control panel|http://infinite.tiddlyspot.com/controlpanel]], [[download (go offline)|http://infinite.tiddlyspot.com/download]]|\n| links:|[[tiddlyspot.com|http://tiddlyspot.com/]], [[FAQs|http://tiddlyspot.com/faq/]], [[announcements|http://tiddlyspot.com/announce/]], [[blog|http://tiddlyspot.com/blog/]], [[email feedback|mailto:feedback@tiddlyspot.com]], [[donate|http://tiddlyspot.com/?page=donate]]|