text:
Live Feed TV Reviews Premiere Dates TV's Top 5 Podcast Scorecard TV Ratings
'The Deuce' Star Maggie Gyllenhaal on a Weinstein-Trump Link and a Possible Move Behind the Cameras
10:00 AM PST 11/21/2017 by Michael O'Connell
Courtesy of Christian Hogstedt
On the heels of her buzzy performance in David  Simon and George  Pelecanos' HBO drama, the actress talks about the learning curve of becoming a producer and why she wanted the credit so badly.
Maggie Gyllenhaal announces that we should probably order our meal before wading into the mud of misogyny. It's not that she doesn't want to talk about it. She does. But the actress has just arrived from a dance aerobics class — "an exclusively Top 40 soundtrack," she surrenders, guilt and pride mingling in her pixie grin — and she's already soliciting the server's advice on which dishes have the most protein and can arrive the quickest.
"Do you mind if I just order for you?" she offers, running through a list of small plates.
Hollywood's harassment crisis was not the impetus for this late-October meeting in an inordinately rustic West Village cafe, autumn finally manifesting outside after a week of 70-degree days in New York City. But given the percolating testimonials about sexual harassment and abuse from so many of her peers — and the subject matter of her HBO drama, The Deuce (she plays a sex worker at the dawn of the 1970s porn boom) — the taxidermied bust of a wild boar eavesdropping above our table isn't the only pig on our minds.
"I really feel that what's been happening since Harvey Weinstein was instigated by feelings that came from having Trump elected," says Gyllenhaal, who admits the abuse news cycle has caused her to rehash experiences she'd previously accepted or brushed off — from genuinely uncomfortable incidents to off-color jokes. "When an overt misogynist, who says out loud, 'I grab women's pussies, and they let me because I have a lot of money,' is elected president, alarms go off. There have to be real consequences for that behavior."
Gyllenhaal claims she was asleep until 2016, a year that both upset and invigorated her. But her latest role says otherwise. She was wooed by The Deuce, at director and executive producer Michelle MacLaren's prodding, more than a year before the election. And when her eight-episode run as Candy debuted this fall, it minted her as TV's most unlikely feminist icon of the moment.
Gyllenhaal's take on a prostitute striving for a smart way out bucks the "hooker with a heart of gold" trope and shines a nostalgia-free light on the New York of yesteryear, where women were chattel. "With the show coming between Trump and Weinstein, I don't think anyone can argue that society has in any serious way grappled with these issues," says David Simon, who created The Deuce with The Wire and Treme collaborator George Pelecanos. "They're present, and right now, not a lot of hard work is being done to make them go away."
In the first season, Gyllenhaal appears nude in most episodes, simulates self-pleasure (her idea), choreographs two co-stars having sex, casually rubs Vaseline on another actress' bare breasts and, in one particularly horrific moment, is brutally assaulted by a john. She reflects on some of these moments with a frank humor that's rather unexpected. Perhaps it shouldn't come as a surprise from an actress whose big break was on all fours, wearing a saddle and being spanked by James Spader in the 2002 S&M romantic comedy Secretary. Then just 22, Gyllenhaal became an instant indie darling with the Sundance hit — a breakout moment for the oldest child of a Hollywood family that includes two fellow Oscar nominees (actor brother Jake and scribe mother Naomi Foner) and a director, father Stephen.
"Maggie was a little bit outside of the demographics we'd given to casting," says Simon. "But as soon as Michelle said it, I thought of Secretary. She gave such a brave and unrelenting performance so early in her career. That's what we were going to require."
Gyllenhaal first required something for herself — a producer's credit, which she sought despite skepticism from her own team. "I knew I couldn't do it without that guarantee of collaboration," she says, exuding the quiet confidence she carries throughout this interview. "But I desperately wanted to do it."
There was appeal beyond the material. Gyllenhaal has been New York-based since moving from Los Angeles at 17 to attend Columbia University. She turned 40 on Nov. 16 and somewhat famously lives in the Park Slope neighborhood of Brooklyn with husband Peter Sarsgaard and their two daughters. A TV series that keeps her working in the city five months out of the year is, whether she was looking for it or not, ideal — especially with Sarsgaard at work on another local shoot, Hulu drama The Looming Tower. Her only prior TV credit, Hugo Blick's The Honourable Woman, earned Gyllenhaal a Golden Globe for best actress in a miniseries but required a lengthy and trying family relocation to London and Morocco.
Simon and company obliged her producer request, but the showrunner stresses that Gyllenhaal would have been deeply involved with or without it. She embraced her dual role, perhaps too zealously at first. She found the notes process daunting and labored over her feedback. "Maggie doesn't just think about things; she internalizes them," says MacLaren, who directed her in the pilot and the Oct. 29 finale.
"By the seventh episode, Trump had just been elected, my kids were sick, and I was lying in bed trying to write this epic explanation of why I needed this and that," says Gyllenhaal, diving into the second of two meatball dishes on the table. "And I just realized that they trust me and respond to me. It doesn't have to be a dissertation."
After two decades in the business, Gyllenhaal admits there are many elements of TV and filmmaking she's only just beginning to fully understand. After wrapping season one of The Deuce, she signed on to star in and produce The Kindergarten Teacher — a "Polanski-esque thriller" in which Gyllenhaal plays a woman obsessed with her 5-year-old student. It's something she briefly regretted after seeing a rough cut in August. "It was like, 'Oh, my God, this is unbelievably terrible,'" she recalls. "I thought I did really interesting work, and it was like, just not on the screen. I was devastated."
She shared that horror with her fellow producers: "They looked at me and said, 'It's just the assembly … what the fuck is your problem?' As an actor, you just think they'll put together the best moments and it can't fail. But it takes time. The film has become one of the pieces of work I'm most proud of, ever. And I learned a lot about watching an assembly."
The next few years of her professional life are largely laid out for her. The Deuce is set to return for a second season, which starts production in February, and Simon and Pelecanos' initial pitch includes a third season — one HBO will presumably grant. The question of what to do in between is one that weighs on Gyllenhaal, now sated and about to leave for a meeting. She's discussed producing roles and even directing on projects that don't necessarily include her as an actress — keenly aware that the industry is in desperate need of more women behind the scenes.
"Acting is a really weird job," acknowledges Gyllenhaal. "The movie this summer, playing this broken person, was brutal. I wonder if maybe someone else wants to play her next time."
HOW 'DEUCE' MIGHT HAVE DIED AFTER WEINSTEIN
David Simon says his show about sexual commodification probably would've been dismissed if it had premiered two months later.
Timing can be everything. And with all of Hollywood now under a microscope for sexism, sexual harassment and sexual assault, David Simon is not sure that his HBO show about sex workers would have gone over very well had it debuted in November and not August.
"We knew we hadn't made something that was exploitative," says The Deuce's co-creator. "The fact that it has nudity and shows exploitative nature on the part of men doesn't in any way make it exploitative. But can you imagine if we had followed the revelations about Harvey? I guarantee you half of the people, without even waiting to see it, would have taken in the headlines and said, 'See, this is the kind of stuff Hollywood makes.'"
But what Simon and collaborator George Pelecanos made, enlisting three women directors and two women writers, stands as a critique of the power imbalances that enable abuse and exploitation. Simon says he previously shied away from writing women, at least until his previous HBO series — New Orleans drama Treme. "We haven't really addressed gender politics," says Simon, conceding that many still won't see beneath the skin, so to speak, of The Deuce. "There are still going to be people who watch just the first 10 minutes and say, 'This is porn.'"
This story first appeared in a November stand-alone issue of The Hollywood Reporter magazine. To receive the magazine, click here to subscribe.
Michael O'Connell
michael.oconnell@THR.com mikeylikestv


text:
apple banana find news that contain at least one of the two words.
"some words" find news that contain the exact phrase "some words".
apple* find news that contain words such as "apple", "apples", "applesauce", or "applet".
+apple +juice find news that contain both words.
+apple -macintosh find news that contain the word "apple" but not "macintosh".
+apple macintosh find news that contain "apple", but rank news higher if they also contain "macintosh".
(click to close)
Read the latest headlines about developments in the international rail industry in Vienna and Austria
Vienna International Rail Industry News
Hub to the Far East - ÖBB Rail Cargo and Port of Trieste Strengthen Cooperation
At a critical time when the question of Italian economic independence from China is being discussed throughout Europe, ÖBB's Rail Cargo Group is intensifying its cooperation with the port of Trieste in order, among other things, to be able to use the transport connection of the Adriatic port to the Far East.
Bolivia - Doppelmayr Completes the World's Largest Urban Cable Car Network
The world's largest ropeway network with a length of 33 kilometers in the Bolivian capital La Paz has recently been completed by a tenth and final line from Doppelmayr/Garavanta.
Business Mission and "Future Trip" to Tel Aviv as Part of the State Visit of Van der Bellen
On the occasion of the official state visit of Federal President Alexander Van der Bellen, the Austrian Chamber of Commerce and Industry (WKO) is organising an economic mission entitled "Infrastructure" as well as the "Open Innovation for Corporates" future trip to Tel Aviv.
Austrian-Israeli Economic Relations - 20% Increase in Exports
On the occasion of the official state visit of Federal President Alexander Van der Bellen and the accompanying business delegation of the Austrian Chamber of Commerce, the issue of the actual state of economic relations has arisen. The Austrian-Israeli foreign trade volume amounted to 568 million euros in 2017, with a trade balance surplus for Austria of 229 million euros. The Chamber of Commerce reports that Austrian exports to Israel increased by 20.3% in 2017. The trend seems to have continued in 2018. More than 600,000 overnight stays by Israeli tourists make Israel one of the top nations in Austrian tourism statistics.
High-Level Forum Africa-Europe - EIB Signs 3 Africa Projects Totalling Half a Billion Euros
At the Africa‑Europe High‑Level Forum in Vienna the European Investment Bank formally agreed a total of EUR 495 million of new financing for three projects in ten countries to support sustainable transport, clean energy and internet access projects in North, West and East Africa.
Bratislava - Vienna Railway Line Extended
The two EU capitals Vienna and Bratislava are approaching each other. After a construction period of about two years, representatives of Austrian Federal Railways (ÖBB), the EU, the City of Vienna and the Province of Lower Austria opened the first part, the so-called "Vienna section" of the Vienna - Bratislava line extension. The completion of the second part, the so-called "Lower Austrian Section", will last until 2023. The journey time from the main railway station in Vienna (Hauptbahnhof-Wien) to the main railway station in Bratislava (Bratislava hlavná stanica) will be reduced from 66 minutes to 40 minutes.
What Does Austria Have to Do with the Silk Road Project?
The Chinese "One Belt One Road Initiative", also known as the New Silk Road, is China's strategic measure of the century to make the entire Euro-Asian region including Africa even more dependent on its products and investments. Now the Austrian Federal Railways (ÖBB), the Vienna Chamber of Commerce and the ambassadors from China and Kazakhstan have joined forces to convince the Austrian population and politicians that the connection of Austria via broad-gauge railway to the Silk Road is an opportunity of the century.
Danube Region Business Forum - Infrastructure and Its Implications on Business in CEE and SEE
The Danube Region is one of the traditionally important markets for Central European regions and companies. However, the infrastructure of this region does not yet meet the requirements of the economy. The 8th Danube Region Business Forum will take place on 9 October 2018 at the Austrian Federal Economic Chamber in Vienna. The aim of the forum is to ensure that the infrastructural quality and cooperations in the region meet the requirements of the economy.
Port of Vienna as International Trimodal Logistics Hub for Water, Rail and Road
Peter Hanke, City Councillor for Economic Affairs, together with Doris Rechberg-Missbichler, Managing Director of Wien Holding, and Fritz Lehr and Doris Pulker-Rohrhofer, Managing Directors of the Port of Vienna, presented the balance sheet of the Port of Vienna for the year 2017. Turnover amounts to 58.1 million euros (+2.3%), earnings before taxes 14.8 million euros (+16.5%).
Vladimir Putin on PR Campaign in Austria
Vladimir Putin is on his sixth official state visit to Austria. Officially, on the occasion of the 50th anniversary of the gas supply contract between Austria and Russia, this is a working visit to President Van der Bellen and Chancellor Kurz. In fact, a new gas supply contract between Gazprom and OMV is the main reason for the visit. Other gas deals are still in the negotiation phase, namely the Gazprom Urengoy gas field asset swap and the Nordstream 2 pipeline project. The Central European Gas Hub in Baumgarten/Lower Austria, an important gas distribution hub from the Russian perspective, could also be on the agenda.
Doppelmayr to Build Cable Liner at London Airport
At London Luton Airport, Doppelmayr is building a cable car almost two kilometers long with a capacity of 2,720 passengers per hour and per route. This makes Luton Airport the second airport project in the UK after Birmingham for Doppelmayr. The Cable Liner is scheduled to go into operation in April 2021. Doppelmayr does not give details of the project turnover.
Strabag to Build Rail Tunnel in Toronto
Strabag has had an infrastructure contract in Toronto awarded to its Canadian subsidiary. The scope of the work includes the construction of a 180 m long tunnel under Highway 401 to accommodate two tracks operated by Ontario's public transport agency Metrolinx. The full investment volume amounts to about EUR 77 million.
Indian Ministry of Railways Discusses India-Austria Railway Cooperations
The Indian Minister of Railways, Shri Suresh Prabhu paid a visit to Austria. In an event organized by the Chamber of Commerce H.E. Mr. Prabhu met with CEOs and Austrian Railway Companies to discuss possible further India-Austria cooperations in the field of railways technology.
Bawag Laying Off Further 180 to 200 Employees
Bawag Bank will optimize its branches and in course of the process will cut 180 to 200 jobs. 70 to 80 of the affected employees are supposed to be sent back to their actual employers - Post AG.
Siemens Austria Builds World's Largest Metro Project in Saudi Arabia
The Austrian unit of Siemens announced in Vienna Simmering at the rollout of the first vehicle that a "a very, very big order" has been secured. With six lines and a total route length of 175 kilometers, the capital of Saudi Arabia Riyadh is planning the world's largest subway project. Siemens is to supply the entire turnkey system for two driverless metro lines.
EU to Crack Down on Postal Rip-Offs including Austrian Post
The FT reports that Brussels is preparing a regulatory crackdown against rip-off pricing by national postal operators on cross-border parcel deliveries. According to a study, cross-border parcel deliveries are often five times more expensive than identical trips on the domestic market. While the price of a standard 2 kg parcel delivery in Austria with the national postal operator is €4.44, to have that same parcel send to neighbouring Italy would cost €14. Sending the same parcel back from Italy to Austria will rise to €25. In order to connect the common market, the EU wants to develop the potential of e-commerce and to boost cross-border trade. According to the FT, a spokeswoman of the European Commission said that early next year the Commission will "launch measures to enhance price transparency and regulatory oversight" of the European parcel delivery market.
New Vienna Central Station Offers New Connections and Shorter Travel Times
With the timetable change on 13 December 2015, Vienna Central Station and Vienna Meidling train station will be assuming their full role as a regional transportation hub. Bringing together the Western, Southern, Eastern and Northern Routes at Vienna Central Station and Vienna Meidling, creates a transportation hub with direct connection to all Austrian state capitals as well as Vienna Airport. For travelers this means better connections, shorter travel times and more comfortable traveling.
December 7, 2015 · Updated: December 7, 2015; 18:15
Californian Woman Can Not Take Austrian Railways to Court in the US
Supreme Court says, Carol Sachs who was heavily injured in Innsbruck can't sue in the US. Her lawsuit against the Austrian national railroad ÖBB for injuries that she suffered while attempting to board a train in Austria does not fall within the "commercial activity" exception to the Foreign Sovereign Immunities Act, and is therefore barred by the doctrine of sovereign immunity. The American wanted USD 20 million compensation from ÖBB.
Austrian Railways Eyes Acquisitions Across Central and Eastern Europe
Oesterreichische Bundesbahnen (OeBB), the Austrian state railway operator, is eyeing rail cargo operator buys across Central and Eastern Europe, a source close to the company and a person claiming knowledge of the situation said. OeBB, with EUR 3bn in revenue, believes a number of opportunities will soon come up in countries "east of Austria", including countries of the former Yugoslavia, the source said.
Gebrüder Weiss Opens Three Branches in Moscow
Logistics Company Gebrüder Weiss is consolidating its network, and with the Russian location, will be closing a geographical gap between its branches in Europe and Asia.
New Post Logistics Center Opens in Upper Austria
Listed postal service provider Post AG has officially inaugurated the new logistics centre in Allhaming, Upper Austria. Built for EUR 50 million (USD 64 million) and used since the beginning of August instead of the centre located at the Linz main train station, it has been designed for daily up to 1.6 million letters and 100,000 packages. Some 650 employees work in the new post office near the motorway Westautobahn. Various political officials participated in the inauguration.
Ederer Elected as Supervisory Board President of ÖBB Austrian Railways
A few days after her resignation from the ÖIAG Supervisory Board the former Siemens manager Brigitte Ederer was elected unanimously to the top of the ÖBB Supervisory Board.
Ederer Resigns as Supervisory Board Member of OIAG
Brigitte Ederer resigns as supervisory board member and leaves state holding company OIAG.
Transport & Logistics - DB Schenker Opens New Logistics Center in Belgrade
DB Schenker will be moving into a new logistics center near Belgrade/Serbia at the beginning of 2015. The center will offer customers the technology for specialized logistics solutions.
ÖBB Chairman Pöchhacker is Dead
The longtime chairman of the board of ÖBB and former CEO of the construction company Porr, Horst Pöchhacker, died on Wednesday after a short illness at the age of 75 years.
Siegfried Wolf New OIAG Supervisory Board Chairman
OIAG's supervisory board has appointed Siegfried Wolf as the new Chairman of the supervisory board.
Austrian Export Award 2014 for Above-Average Export Commitment
As part of a festive gala evening in Vienna's Museumsquartier, the Austrian Export Prize 2014 has been awarded by the Federal Minister for Science, Research and Economics, Reinhold Mitterlehner, and the President of the Economic Chamber Austria (WKO) Christoph Leitl.
AIRail: New Type of Rail Connections Between Linz and Vienna International Airport
From 14 December 2014, Austrian Airlines and ÖBB are to launch a cooperation entitled 'AIRail' on the Linz central station – Vienna Airport – Linz central station route. In future, Austrian passengers with an Austrian flight either preceding or following their rail journey will also be able to use new ÖBB connections with an Austrian flight number between Linz central station and Vienna Airport.
Yakunin: Broad-Gauge System from Vladivostock to Vienna to Be Established
Vladimir Yakunin, head of the Russian Railways (RZD), wants to stick to his strategic plans and establish an uninterrupted rail link between Vienna and Vladivostock.
Romania: Privatization of Railroad Company Flopped
The privatization of Romanian freight railroad company CFR Marfa failed. The sale of shares is part of the conditions with IMF, the World Bank and the European Union.
Poland to Improve Railway Infrastructure
According to CIR, the Polish government's press center, the government plans on spending PLN 979m on railway infrastructure in 2014 and a further amount of PLN 692m in 2015.
Lopatka Demands Reform for Austrian Railways
State Secretary Lopatka demands Minister of Infrastructure Bures to tackle the expensive pension system at the Austrian Railways by doing away with privliges for emplyoees in order to unburden tax payers.
Transport & Logistics - DB Schenker to Expand its Operations in Croatia
Simultaneously with the accession of Croatia into the EU, and thus the abolition of customs borders between Croatia and the EU countries, Schenker positions itself on that market as a potential logistics partner.
September 3, 2013 · Sponsored Content
Kapsch Successfully Completes Interoperability Tests for GSM-R
Train communication systems from Kapsch CarrierCom successfully tested according to EU interoperability specifications.
Kapsch Technology Ensures Safety on the Mecca-Medina Railway Line with it GSM-R Solution
The Prestigious High-speed rail on the pilgrimage route between the two holy cities of the Kingdom of Saudi Arabia is being equipped with the GSM-R solution of Kapsch.
Austria: Reduction in Working Hours at ÖBB
So far, the trade association of railways at the Austrian Chamber of Commerce (WKO) has rejected the reduction of working hours at the Austrian Railways (ÖBB).
Austria: Raids by EU Commission at ÖBB
The Austrian Railways is alleged of having agreed to fixed prices with other companies. House searches were carried out.
Zagreb: In-depth Analysis of SEE Infrastructure Development Plans
Many countries of Southeast Europe are outlining ambitious infrastructure development plans within transport, social, energy and environmental projects.
Vienna: Infrastructure & Construction Summit Brings Together All Balkan Countries
Government ministers from Austria and various Balkan countries will be discussing infrastructure and construction in the region at a two-day summit in Vienna at the end of May.
April 30, 2013 · Sponsored Content
Lopatka: "Poland Important Economic Partner and Ally of Austria in EU"
Austrian State Secretary encourages bilateral relations and trade between the two Central European countries as well as improved relations between EU and US.
Voestalpine: Compensations for Deutsche Bahn
Deutsche Bahn (DB) is to receive compensations by Austrian steel manufacturer voestalpine.
Austria: Haselsteiner to Increase Share at Westbahn
Hans Peter Haselsteiner, CEO of Strabag, is going to increase his stake in Westbahn to 47 %, the railway company, which is in majority privately held and main competition for Austrian Railways (ÖBB).
Eder: Future of Voestalpine and Steel Manufacturing Industry
In an interview CEO of voestalpine, Wolfgang Eder explains the current situation on the steel market and points out that mass products will come from CESEE countries in the future.
Strikes Paralyze Poland
Protests against government's changes in education, social and labor policy.
Bulgaria: Latest Protests Against Privatizing of Railway
Protesters in three cities gathered to demonstrate against the privatization of the freight division of the Bulgarian state railroads (BDZ).
Hungary Enlarges Railway Network
State Secretary on Foreign Relations Peter Szijjarto announced that MAV (Hungarian Railways) starts its biggest investment program since WWII.
Austrian Railways Achieved Net Profit Last Year
For the first time for decades, Austrian railways (ÖBB) could generate profits after taxes.
Romania Privatizes Freight Division of National Railways
Romania´s government sells a 51% stake in CFR Marfa, the publicly held rail freight company.
Austrian Railways: Sale is "No Issue"
Christian Kern, CEO of Austrian Railways (ÖBB) underlines that the company must not be sold.
Austrian Railways: Net Income to Reach € 200m in Medium Term
Despite the difficult economic situation, CEO Christian Kern aims to increase the profitability further. "The fourth quarter will be brutal." he says.
This category only
More Rail
OEBB Austrian Railways Logistics Industry WKO Austrian Federal Chamber of Commerce Public Debt Christian Kern Infrastructure Transport Industry Doris Bures Construction Industry Railway Industry RCH Rail Cargo Hungaria Hungary RCA Rail Cargo Austria Siemens Austria Austerity Earnings Hans Peter Haselsteiner Westbahn Restructuring Privatizations

redpajama_set_name: RedPajamaCommonCrawl


It's time for a new paradigm.
Everything you need is already within you. Health and happiness is our true nature, and all the answers you ever needed are inside, quite literally our DNA holds the key to unlocking our true potential.
But what if it all that has been clouded and polluted with toxic memories you have carried around for lifetimes, ancestoral trauma, collective beliefs and layers of fear and actual physical toxins keeping you stuck in a low vibration, so you can't see and hear yourself clearly anymore, feel the joy and love that is inherent to your or understand your purpose.
Instead you are stuck in depression, confusion and repetitive patterns.
At "Detox your Life" it is my mission to help you let go of all that toxic baggage, heal yourself, alchemize what is blocking you from letting your love and light shine so bright that it will change the world, so that you can live your purpose as the divine, powerful creator that you truly are.
Are your ready to detox?
It's my mission to help light workers come into their full radiance and power.
It's time to step into your purpose and activate your true potential.
I'm here to help you navigate the path of awakening, heal and liberate yourself so that you can shine your light and help others.
Anything you're struggling with is only here to bring you higher if you know how to transform it.


Winter has only just reared its ugly head and already – ALREADY – people have started putting up their Christmas lights.
It's not even Halloween yet, nor has bonfire night arrived, but some Saint Nick enthusiasts just can't wait the two months until December 25.
Take John Copestick, for example. The 74-year-old from Stirchley in Birmingham has already switched his lights on.
John starts decorating his house for the festive period in September – and has been doing so for 35 years.
John uses approximately 10,000 lights, metres of tinsel and hundreds of ornaments to turn his home, where he lives with wife Jean, into a festive grotto.
John said: 'It took us about four or five weeks to get all the decorations up. My son-in-law and daughter have done most of the work – I can't lift as much as I used to.
The Birmingham family always aim to have the decorations up by the October school half term – so children from nearby Allen's Croft primary school and nursery can have a tour around the house.
Meanwhile in Billingham, the Van Der Merwe family have also jumped the shark and decorated their three-bed semi weeks before Christmas.
They're surely the earliest Christmas decorations to go up on a Teesside house in 2017.
But the family – mum Sarah, 33, dad Shaun, 36, and kids Joseph, 12, Alfie, 10 and Leonna, eight – just love getting into the festive spirit.
Sarah says she has no time for the 'bah humbug' brigade because she 'loves Christmas and the lead-up to it. It's a time for family and for being together – the most magical time of the year.
'Halloween's become an Americanised thing – it's Christmas I love. I love the fact kids come knocking on the door, asking when the decorations are going up.
Sarah and Shaun have been putting their Christmas lights up for 13 years.


What I think is so interesting about traveling in a place like India is that the country is at cultural crossroads.
On one hand, you have women washing clothes on rocks, ox-powered wells (that's me riding behind the ox, fearful that he was going to poop on me!), and foot-pedal threshers for rice.
On the other hand, you have satellite dishes perched on the roofs of wooden shacks, cells phone in the hands of rickshaw drivers, and chickens roosting on solar-panels. In fact, I find the country's enthusiastic adoption of solar power particularly interesting.
Densely populated and with a high sun exposure (averaging 300+ sunny days), India has the two ingredients to make solar power an attractive option for energy generation. Already considered a leader in wind-power generation, the Indian government is now embracing solar options.
Two years ago, India announced a "National Solar Mission" to generate 1,000 MW of power by 2013. That same year, India adopted a US$19 billion plan to produce 20 GW of solar power by 2020. I'm not exactly sure how much 20 GW is, but it seems like a lot(!) Reports indicate that solar power could cover all of India's projects energy demands in 2015.
Falling prices of PV panels make the costs of adopting a solar alternative much cheaper, especially in light of increase grid power costs.
India's furious pace of economic growth is causing a huge electricity deficit (as much as 13% a day) that needs to be filled.
Customers make a small down payment for a high quality solar system and then pre-pay for the service in increments, basically topping up their account each month through user-defined increments on their cell phones. So each month, a family can buy the amount of electricity it will need for that month: a pay-as-you-go system of energy consumption!
I think this is an ingenious approach to helping individuals' access affordable solar power – all without the interference of a national electricity distribution system. Smart!
This entry was posted on Saturday, February 4th, 2012 and is filed under Hearth.


Addictions have traditionally been understood to be with either substances or behaviour that, done to excess, can be harmful to our bodies and to our lives. In this new era, is this still true or have we managed to also slip a few 'acceptable' addictions under the radar? And what does this mean for us as family members, as partners, as work colleagues, as professionals?
Whether your addictions are an obvious struggle or characterised by a subtler outplay, these discussion groups are offered as a way of openly discussing, exploring and unpacking why we are turning more and more to addictions as a way of coping with life.
The open forums are run on the basis that first and foremost all of us have a depth within us that is both universal and equal with the all. It is from this premise that we invite you to join us in deepening this topic.
Rather than viewing ourselves as 'broken' or in need of 'fixing' what if we considered that we have an innate wisdom that can support us to heal from addiction. A wisdom that does not need to be found or acquired, but simply rediscovered.


text:
University moves up rankings
Wrexham Glyndwr University has risen 45 places in this year's Whatuni Student Choice Awards University of the Year awards – joining the UK's top 100.
The institution is now placed 68th in the UK overall and is also rated in the top twenty in the UK for its courses and lecturers - after moving up to eleventh in the country in that category.
Altogether, Glyndwr has also chalked up rises in the league tables for Job Prospects, Student Union, Student Support and Clubs and Societies in the awards – which are described as 'an annual celebration of the best universities and higher education institutions in the UK.'
The awards are voted on by students at each institution, with more than 41,000 taking part across the UK.
Wrexham Glyndwr University Vice-Chancellor, Professor Maria Hinfelaar, said: "At Wrexham Glyndwr University, we are very much student-centred and that has been reflected in these student-led awards.
"It's wonderful to see the work we put into our courses reflected in the scores of the students who take them, with the university in the UK's top twenty for courses and lecturers.
"I'm delighted, too, to see the university rise so many places to join the UK's top 100 institutions.
"Of course, we intend to build on this year's success – we have been working over the last couple of years to transform the university and that work continues.
"We are continuing to improve the quality of our teaching and research and are seeing more and more fantastic achievements from our graduates.
"We have also already unveiled several new student-centred improvements as part of our ambitious Campus 2025 estates renewal programme, including innovative teaching and social learning spaces.
"We fully intend for that work to continue – with major plans for our Wrexham campuses set to go before Wrexham councillors later this year."
More information about the Whatuni Student Choice awards can be found here: https://www.whatuni.com/student-awards-winners/university-of-the-year/


On April 8, Cheyenne Chamber of Commerce hosted the Harlem Ambassadors professional comedy basketball team for a night of high-flying slam dunks, hilarious comedy, and feel-good family entertainment. The Harlem Ambassadors would like to extend a special thank you to event organizers Cindy and Penny Clift who planned and promoted the event. The Roger Mills Roughnecks were energetic and enthusiastic opponents and we thank all of the players for their good sportsmanship. This event would not have been possible without the support and generosity of local community sponsors, the Cheyenne Chamber of Commerce members, and the event volunteers.


text:
ShellWax
ShellWax is a shell script development plugin for the Eclipse IDE, providing a rich edition experience through integration with the Bash Language Server.
General Purpose Tools, IDE
Last Updated on Friday, January 13, 2023 - 10:09 by Alexander Kurtakov
Eclipse Xtext
With Xtext you can easily create your own programming languages and domain-specific languages (DSLs). The framework supports the development of language infrastructures including compilers and inte...
IDE, Modeling, General Purpose Tools, Languages, Editor
Last Updated on Friday, January 13, 2023 - 10:09 by Sven Efftinge
Fortify Remediation Plugin
Connect to a Fortify Software Security Center server with the Fortify Remediation Plugin for Eclipse to view your scanned project results. The Remediation Plugin enables you to audit and comment on...
Last Updated on Friday, January 13, 2023 - 10:09 by Anna Karyakina
Eclipse Xtend
Xtend is a statically-typed programming languages for Java developers. It leverages Java's typesystem and reuses its syntax as far as possible, but cuts down the amount of boilerplate you ha...
Editor, Programming Languages, Languages, IDE, J2EE Development Platform
EMF Forms
EMF Forms provides a new way of developing form-based UIs. Instead of manually coding form-based layouts, it allows you to describe the UI with a simple model instead of with code. The approach all...
Application Development Frameworks, Modeling, Rich Client Applications, Editor, Modeling Tools
Last Updated on Friday, January 13, 2023 - 10:09 by Johannes Faltermeier
UML Lab Modeling IDE
UML Lab provides truly agile modeling and coding with Eclipse. The tool integrates UML modeling with code generation and template-based reverse and round-trip engineering.
Editor, Source Code Analyzer, UML, Modeling Tools, Modeling
Last Updated on Friday, January 13, 2023 - 10:09 by Leif Geiger
Enhanced Kotlin for Eclipse
Plugin Kotlin for Eclipse based on JetBrains Kotlin plugin and contains small enhancements. These enhancements mostly related to adaptations for latest versions of Java, Eclipse and so on.
Last Updated on Friday, January 13, 2023 - 10:08 by Vladimir Bychkov
TM Terminal
A fully working command-line Terminal inside Eclipse. Just press Ctrl+Alt+T to open a local command prompt (Terminal). That's all - it just works :) Previous sessions are remembered and auto-re...
IDE, Systems Development, Tools, Internet of Things (IoT), Linux Tools
Last Updated on Friday, January 13, 2023 - 10:08 by Martin Oberhuber
Eclipse Enterprise Java and Web Developer Tools
Enables Enterprise Java Bean, Java Enterprise Application, Fragments, and Connector, Java Web Application, JavaServer Faces (JSF), Java Server Pages (JSP), Java Servlet, Java Web Services, and Tag ...
Editor, Web, XML, Java EE and OSGi Enterprise Development, IDE, Programming Languages, Web
Last Updated on Friday, January 13, 2023 - 10:08 by Nitin Dahyabhai
Eclipse XML Editors and Tools
Includes the XML, XML Schema, and DTD Editors and Tools, and XSL Developer Tools from the Eclipse Web Tools Platform project. For questions and troubleshooting, please use our forum at http...
Tools, Web, XML, Java EE and OSGi Enterprise Development, XML, Editor, Languages
Eclipse MAT Easy!
Eclipse MAT Easy! This plugin provides a new view named "Collection Tree"
Last Updated on Friday, January 13, 2023 - 10:08 by Quentin Lefèvre
Eclipse Web Developer Tools
Includes the HTML, CSS, and JSON Editors, and JavaScript Development Tools from the Eclipse Web Tools Platform project, aimed at supporting client-side web development and node.js applications. Als...
Programming Languages, IDE, Web, XML, Java EE and OSGi Enterprise Development, Editor, Tools
JUnit-Tools
A set of tools to optimize the creation and maintainability of JUnit tests. Write less, test more! The main feature of JUnit-Tools is to generate JUnit test-elements (packages, classes, methods,...
Source Code Analyzer, Testing, Application Development Frameworks, Code Management, Tools
Last Updated on Friday, January 13, 2023 - 10:08 by Robert Streng
JRebel and XRebel for Eclipse
JRebel is a productivity tool that allows developers to reload code changes instantly. It skips the rebuild, restart, and redeploy cycle common in Java development. JRebel enables developers to get...
J2EE Development Platform, Tools, Build and Deploy, IDE, Web
Last Updated on Friday, January 13, 2023 - 10:08 by Michael Rasmussen
CMake Editor
CMake Editor adds syntax coloring, code completion and code templates for CMake files.
Editor, Programming Languages
Last Updated on Friday, January 13, 2023 - 10:08 by Martin Weber
cmake4eclipse
Automatically generates build-scripts for the Eclipse CDT managed build system from CMake scripts.Stores your cmake commandline options with the eclipse project.
Build and Deploy
Epsilon is a family of Java-based scripting languages for automating common model-based software engineering tasks, such as code generation, model-to-model transformation and model validation, that...
Last Updated on Friday, January 13, 2023 - 10:08 by Dimitris Kolovos
Context Mapper
Context Mapper provides a DSL to create Context Maps based on strategic Domain-driven Design (DDD). DDD with its Bounded Contexts offers an approach for decomposing a domain or system into multiple...
Modeling, Modeling Tools, Editor, Languages, Tools
Last Updated on Friday, January 13, 2023 - 10:08 by Stefan Kapferer
JBizMo
JBizMo supports building of Angular, Eclipse RCP/RAP, JavaFX, JSF (Primefaces), Swing and Vaadin applications. The generated applications can run in a stand-alone mode or they can be deployed on a ...
Web, XML, Java EE and OSGi Enterprise Development
Last Updated on Friday, January 13, 2023 - 10:08 by mgsoft Mising name
Bndtools - The OSGi Development Tool
Bndtools is an Eclipse-based development environment for OSGi bundles and applications, based on Bnd.
Editor, Tools, IDE, Build and Deploy
Last Updated on Friday, January 13, 2023 - 10:08 by Neil Bartlett


text:
Porthcressa Beach (Cornwall)
Home > United Kingdom > Cornwall > Isles of Scilly
Porthcressa beach is a sandy beach located within Hugh Town on the Scilly Isles. It is the southern and sandiest of the two Hugh Town beaches.
The water in Porthcressa Bay is a gentle slope and good for swimming and snorkelling.
Facilities include promenade, toilets, cafe, no lifeguards.
Porthcressa beach has a Seasonal Ban 1st May - 30th September
Why not check other beaches nearby as we have no beaches around Isles of Scilly, 215 beaches in Cornwall, or check our list of Cornwall Dog Friendly Beaches.
Beach Water Quality
No water quality measurement available for Porthcressa Beach.
Our weather forecast for Isles of Scilly in Cornwall is split into two widgets. The first shows a timeline containing temperature, wind, sunrise/sunset and chance of rain, whilst the second shows the forecast for the week ahead including severe weather alerts when available.
St Marys lifeboat station
St Marys lifeboat station was established in 1837 and operates an all weather lifeboat. Station is open daily.
Hugh Town Beach
Hugh Town has two beaches with this one being not as sandy as it's southerly neighbour Porthcressa beach. This means most visitors to Hugh Town head the short distance to Porthcressa. Facilities include car parking, slipway, and breakwater. We have no dog information for Hugh Town beach.
The Garrison peninsula above Porthcressa Beach at the rear of Hugh Town on St. Mary's. Paths take you around the peninsula and you can well understand the strategic importance of the garrison. As you walk you will see the walls, various battery locations and the castle.
Harrys Walls
An unfinished artillery fort, built above St Mary's Pool harbour in 1552-53
Old Town Bay Beach
Old Town Bay beach is a small crescent shaped beach overlooked by Old Town. Facilities include car parking, toilets, food, slipway, no lifeguards.
Penninis Lighthouse
Peninnis Lighthouse on St Mary's Island in the Scilly Isles is a small automatic lighthouse consisting of a metal tower, the upper part painted white and the lower part and cupola painted black. This lighthouse was established in 1911 when it superseded the lighthouse on St Agnes which had been in operation since 1680.
Bants Carn Burial Chamber and Halangy Down Ancient Village
Bant's Carn Burial Chamber and Halangy Down Ancient Village. The remains of an Iron Age village in a scenic location. With a Bronze Age burial mound, entrance passage and inner chamber.
Port Hellick Beach
Port Hellick Beach sits in a sheltered tidal inlet on St Mary's south coast and the beach at low tide offers a wide expanse of sand and rocks. This is not really a location for sitting on the beach but offers a great natural landscape. A shingle bar provides a freshwater pool (Higher Moors and Porth Hellick Pool) behind the beach that is a Site of Special Scientific Interest (SSSI) for the ″wide diversity of habitats with several rare and notable plant species″and making this an important stop-off for migrating and wintering birds. Sir Cloudesley Shovell, Admiral of the Fleet was temporarily buried on the beach after he was washed up here when his ship struck the rocks on 22nd October 1707, with the loss of her entire crew of about 800 men. Sir Cloudesley Shovell's body, along with the bodies of his two stepsons and that of Captain Edmund Loades, were washed up on Porth Hellick Cove the following day. The body was subsequently exhumed by order of Queen Anne and finally laid to rest in Westminster Abbey on 22nd December 1707. A small memorial marker marks the site where he was washed ashore. The beach has no facilities.
Porth Hellick Down Burial Chamber
Porth Hellick Down is an area of downland on the east side of the island of St Mary's in the Isles of Scilly. Seven Scillonian entrance graves stand on the down, the largest is the Great Tomb which has a 12m diameter and a central burial chamber 3m long and 1m high. An unroofed passage 4.2m long leads into the chamber at an angle.
Carn Vean Tea Room
Carn Vean Tea Room is situated near Pelistry, offers teas and light refreshments along with outside seating in the garden.
The Bar Beach
The Bar beach is a small sandbar that joins St. Agnes to the island of Gugh. The beach disappears at high tide but when available the two bays either side are sheltered and ideal for swimming and snorkelling. St. Agnes is small and everything is within walking distance although you still have only a choice of a few cafes and a small shop.
Innisidgen Lower and Upper Burial Chambers
Innisidgen Lower and Upper Burial Chambers includes two Bronze Age communal burial cairns.
Featured Accommodation
The Atlantic is a 1-minute walk from the beach. On the beautiful Hugh Town seafront of St Mary's Island, The Atlantic offers bright, individually decorated rooms and fresh, seasonal food. The ferry terminal is just 5 minutes' walk away and operates to and from Penzance.
St Marys Hall Hotel
St Marys Hall Hotel is set in Hugh Town, St Marys and the hotel features a garden and free WiFi throughout the property. With a shared lounge, the property also has a bar and guests can make use of on-site dining.
Star Castle Hotel
Star Castle Hotel is just a short 5-minute walk from Hugh Town and the beach. The hotel is nestled on the Garrison, it offers breathtaking views of the surrounding islands. The hotel offers free Wi-Fi for all guests, a heated indoor swimming pool, complimentary golf and tennis.
Karma St. Martin's
Karma St. Martin's is a 1-minute walk from the beach and is just 40 yards from the beachfront in St Martins. This charming property features a spa, bar and restaurant, and offers rooms with sea views. Each bright room has an attractive decoration with nautical touches and all rooms have free WiFi, heating, a flat-screen TV, and tea and coffee-making facilities.
Hugh Town,
Isles of Scilly,
Search Isles of Scilly Cornwall Locations


Since I last wrote about the race for the White House, several candidates have joined Sen. Ted Cruz as 2016 contenders. Things are starting to heat up, especially in light of the upcoming release of the already-controversial book by Peter Schweizer, Clinton Cash.
Schweizer has said that his next book will investigate the finances of former Florida Gov. Jeb Bush (R) who is expected to enter the presidential race soon.
Schweizer gave The New York Times and the Washington Post early copies of Clinton Cash on the understanding that they could use his work as the foundation for new reporting. A) That tells me he doesn't have anything to hide, and B) neither media outlet is exactly known for their right-leaning work.


text:
package org.appcelerator.titanium.util;

import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.lang.ref.WeakReference;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.Map;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

import org.apache.commons.codec.digest.DigestUtils;
import org.appcelerator.kroll.KrollDict;
import org.appcelerator.kroll.KrollProxy;
import org.appcelerator.kroll.common.CurrentActivityListener;
import org.appcelerator.kroll.common.Log;
import org.appcelerator.kroll.common.TiMessenger;
import org.appcelerator.titanium.TiApplication;
import org.appcelerator.titanium.TiBaseActivity;
import org.appcelerator.titanium.TiBlob;
import org.appcelerator.titanium.TiC;
import org.appcelerator.titanium.TiDimension;
import org.appcelerator.titanium.io.TiBaseFile;
import org.appcelerator.titanium.io.TiFileFactory;
import org.appcelerator.titanium.proxy.TiViewProxy;
import org.appcelerator.titanium.proxy.TiWindowProxy;
import org.appcelerator.titanium.proxy.TiWindowProxy.PostOpenListener;
import org.appcelerator.titanium.view.TiBackgroundDrawable;
import org.appcelerator.titanium.view.TiDrawableReference;
import org.appcelerator.titanium.view.TiUIView;

import android.app.Activity;
import android.support.v7.app.AlertDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.content.DialogInterface.OnClickListener;
import android.content.res.AssetManager;
import android.content.res.Resources;
import android.graphics.Bitmap;
import android.graphics.Bitmap.CompressFormat;
import android.graphics.Bitmap.Config;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.ColorFilter;
import android.graphics.ColorMatrix;
import android.graphics.ColorMatrixColorFilter;
import android.graphics.Paint;
import android.graphics.PixelFormat;
import android.graphics.Rect;
import android.graphics.Shader;
import android.graphics.Typeface;
import android.graphics.drawable.BitmapDrawable;
import android.graphics.drawable.ColorDrawable;
import android.graphics.drawable.Drawable;
import android.graphics.drawable.LayerDrawable;
import android.graphics.drawable.StateListDrawable;
import android.net.Uri;
import android.os.AsyncTask;
import android.os.Build;
import android.os.Handler;
import android.os.Looper;
import android.os.Process;
import android.text.Spanned;
import android.text.method.LinkMovementMethod;
import android.text.util.Linkify;
import android.util.DisplayMetrics;
import android.util.TypedValue;
import android.view.Gravity;
import android.view.View;
import android.view.View.MeasureSpec;
import android.view.inputmethod.InputMethodManager;
import android.widget.TextView;

/**
 * A set of utility methods focused on UI and View operations.
 */
@SuppressWarnings("deprecation")
public class TiUIHelper
{
	private static final String TAG = "TiUIHelper";
	private static final String customFontPath = "Resources/fonts";

	public static final int PORTRAIT = 1;
	public static final int UPSIDE_PORTRAIT = 2;
	public static final int LANDSCAPE_LEFT = 3;
	public static final int LANDSCAPE_RIGHT = 4;
	public static final int FACE_UP = 5;
	public static final int FACE_DOWN = 6;
	public static final int UNKNOWN = 7;
	public static final Pattern SIZED_VALUE = Pattern.compile("([0-9]*\\.?[0-9]+)\\W*(px|dp|dip|sp|sip|mm|pt|in)?");
	public static final String MIME_TYPE_PNG = "image/png";

	private static Method overridePendingTransition;
	private static Map<String, String> resourceImageKeys = Collections.synchronizedMap(new HashMap<String, String>());
	private static Map<String, Typeface> mCustomTypeFaces = Collections.synchronizedMap(new HashMap<String, Typeface>());

	public static OnClickListener createDoNothingListener() {
		return new OnClickListener() {
			public void onClick(DialogInterface dialog, int which) {
				// Do nothing
			}
		};
	}

	public static OnClickListener createKillListener() {
		return new OnClickListener() {
			public void onClick(DialogInterface dialog, int which) {
				Process.killProcess(Process.myPid());
			}
		};
	}

	public static OnClickListener createFinishListener(final Activity me) {
		return new OnClickListener(){
			public void onClick(DialogInterface dialog, int which) {
				me.finish();
			}
		};
	}

	public static void doKillOrContinueDialog(Context context, String title, String message, OnClickListener positiveListener, OnClickListener negativeListener) {
		if (positiveListener == null) {
			positiveListener = createDoNothingListener();
		}
		if (negativeListener == null) {
			negativeListener = createKillListener();
		}

		new AlertDialog.Builder(context).setTitle(title).setMessage(message)
			.setPositiveButton("Continue", positiveListener)
			.setNegativeButton("Kill", negativeListener)
			.setCancelable(false).create().show();
	}

	public static void linkifyIfEnabled(TextView tv, Object autoLink)
	{
		if (autoLink != null) {
			//Default to Ti.UI.AUTOLINK_NONE
			boolean success = Linkify.addLinks(tv, TiConvert.toInt(autoLink, 16));
			if (!success && tv.getText() instanceof Spanned) {
				tv.setMovementMethod(LinkMovementMethod.getInstance());
			}
		}
	}

	/**
	 * Waits for the current activity to be ready, then invokes
	 * {@link CurrentActivityListener#onCurrentActivityReady(Activity)}.
	 * @param l the CurrentActivityListener.
	 */
	public static void waitForCurrentActivity(final CurrentActivityListener l)
	{
		// Some window opens are async, so we need to make sure we don't
		// sandwich ourselves in between windows when transitioning
		// between activities TIMOB-3644
		TiWindowProxy waitingForOpen = TiWindowProxy.getWaitingForOpen();
		if (waitingForOpen != null) {
			waitingForOpen.setPostOpenListener(new PostOpenListener() {
				// TODO @Override
				public void onPostOpen(TiWindowProxy window)
				{
					TiApplication app = TiApplication.getInstance();
					Activity activity = app.getCurrentActivity();
					if (activity != null) {
						l.onCurrentActivityReady(activity);
					}
				}
			});
		} else {
			TiApplication app = TiApplication.getInstance();
			Activity activity = app.getCurrentActivity();
			if (activity != null) {
				l.onCurrentActivityReady(activity);
			}
		}
	}

	/**
	 * Creates and shows a dialog with an OK button given title and message.
	 * The dialog's creation context is the current activity.
	 * @param title  the title of dialog.
	 * @param message  the dialog's message.
	 * @param listener the click listener for click events.
	 */
	public static void doOkDialog(final String title, final String message, OnClickListener listener) {
		if (listener == null) {
			listener = new OnClickListener() {
				public void onClick(DialogInterface dialog, int which) {
					Activity ownerActivity = ((AlertDialog)dialog).getOwnerActivity();
					//if activity is not finishing, remove dialog to free memory
					if (ownerActivity != null && !ownerActivity.isFinishing()) {
						((TiBaseActivity)ownerActivity).removeDialog((AlertDialog) dialog);
					}
				}};
		}
		final OnClickListener fListener = listener;
		waitForCurrentActivity(new CurrentActivityListener() {
			// TODO @Override
			public void onCurrentActivityReady(Activity activity)
			{
				//add dialog to activity for cleaning up purposes
				if (!activity.isFinishing()) {
					AlertDialog dialog = new AlertDialog.Builder(activity).setTitle(title).setMessage(message)
							.setPositiveButton(android.R.string.ok, fListener)
							.setCancelable(false).create();
					if (activity instanceof TiBaseActivity) {
						TiBaseActivity baseActivity = (TiBaseActivity) activity;
						baseActivity.addDialog(baseActivity.new DialogWrapper(dialog, true, new WeakReference<TiBaseActivity>(baseActivity)));
						dialog.setOwnerActivity(activity);
					}
					dialog.show();

				}

			}
		});
	}

	public static int toTypefaceStyle(String fontWeight, String fontStyle)
	{
		int style = Typeface.NORMAL;

		if (fontWeight != null) {
			if (fontWeight.equals("bold")) {
				if (fontStyle != null && fontStyle.equals("italic")) {
					style = Typeface.BOLD_ITALIC;
				} else {
					style = Typeface.BOLD;
				}
			} else if (fontStyle != null && fontStyle.equals("italic")) {
				style = Typeface.ITALIC;
			}
		} else if (fontStyle != null && fontStyle.equals("italic")) {
			style = Typeface.ITALIC;
		}
		return style;
	}

	public static int getSizeUnits(String size) {
		int units = TypedValue.COMPLEX_UNIT_PX;
		String unitString = null;

		if (size != null) {
			Matcher m = SIZED_VALUE.matcher(size.trim());
			if (m.matches()) {
				if (m.groupCount() == 2) {
					unitString = m.group(2);
				}
			}
		}

		if (unitString == null) {
			unitString = TiApplication.getInstance().getDefaultUnit();
		}

		if (TiDimension.UNIT_PX.equals(unitString) || TiDimension.UNIT_SYSTEM.equals(unitString)) {
			units = TypedValue.COMPLEX_UNIT_PX;
		} else if (TiDimension.UNIT_PT.equals(unitString)) {
			units = TypedValue.COMPLEX_UNIT_PT;
		} else if (TiDimension.UNIT_DP.equals(unitString) || TiDimension.UNIT_DIP.equals(unitString)) {
			units = TypedValue.COMPLEX_UNIT_DIP;
		} else if (TiDimension.UNIT_SP.equals(unitString) || TiDimension.UNIT_SIP.equals(unitString)) {
			units = TypedValue.COMPLEX_UNIT_SP;
		} else if (TiDimension.UNIT_MM.equals(unitString)) {
			units = TypedValue.COMPLEX_UNIT_MM;
		} else if (TiDimension.UNIT_CM.equals(unitString)) {
			units = TiDimension.COMPLEX_UNIT_CM;
		} else if (TiDimension.UNIT_IN.equals(unitString)) {
			units = TypedValue.COMPLEX_UNIT_IN;
		} else {
			if (unitString != null) {
				Log.w(TAG, "Unknown unit: " + unitString, Log.DEBUG_MODE);
			}
		}

		return units;
	}

	public static float getSize(String size) {
		float value = 15.0f;
		if (size != null) {
			Matcher m = SIZED_VALUE.matcher(size.trim());
			if (m.matches()) {
				value = Float.parseFloat(m.group(1));
			}
		}

		return value;
	}

	public static float getRawSize(int unit, float size, Context context) {
		Resources r;
		if (context != null) {
			r = context.getResources();
		} else {
			r = Resources.getSystem();
		}
		return TypedValue.applyDimension(unit, size, r.getDisplayMetrics());
	}

	public static float getRawDIPSize(float size, Context context) {
		return getRawSize(TypedValue.COMPLEX_UNIT_DIP, size, context);
	}

	public static float getRawSize(String size, Context context) {
		return getRawSize(getSizeUnits(size), getSize(size), context);
	}

	public static void styleText(TextView tv, HashMap<String, Object> d) {

		if (d == null) {
			TiUIHelper.styleText(tv, null, null, null);
			return;
		}

		String fontSize = null;
		String fontWeight = null;
		String fontFamily = null;
		String fontStyle = null;

		if (d.containsKey("fontSize")) {
			fontSize = TiConvert.toString(d, "fontSize");
		}
		if (d.containsKey("fontWeight")) {
			fontWeight = TiConvert.toString(d, "fontWeight");
		}
		if (d.containsKey("fontFamily")) {
			fontFamily = TiConvert.toString(d, "fontFamily");
		}
		if (d.containsKey("fontStyle")) {
			fontStyle = TiConvert.toString(d, "fontStyle");
		}
		TiUIHelper.styleText(tv, fontFamily, fontSize, fontWeight, fontStyle);
	}

	public static void styleText(TextView tv, String fontFamily, String fontSize, String fontWeight)
	{
		styleText(tv, fontFamily, fontSize, fontWeight, null);
	}

	public static void styleText(TextView tv, String fontFamily, String fontSize, String fontWeight, String fontStyle)
	{
		Typeface tf = tv.getTypeface();
		tf = toTypeface(tv.getContext(), fontFamily);
		tv.setTypeface(tf, toTypefaceStyle(fontWeight, fontStyle));
		tv.setTextSize(getSizeUnits(fontSize), getSize(fontSize));
	}

	public static boolean isAndroidTypeface(String fontFamily)
	{
		if (fontFamily != null) {
			if ("monospace".equals(fontFamily)) {
				return true;
			} else if ("serif".equals(fontFamily)) {
				return true;
			} else if ("sans-serif".equals(fontFamily)) {
				return true;
			}
		}
		return false;
	}

	public static Typeface toTypeface(Context context, String fontFamily)
	{
		Typeface tf = Typeface.SANS_SERIF; // default

		if (fontFamily != null) {
			if ("monospace".equals(fontFamily)) {
				tf = Typeface.MONOSPACE;
			} else if ("serif".equals(fontFamily)) {
				tf = Typeface.SERIF;
			} else if ("sans-serif".equals(fontFamily)) {
				tf = Typeface.SANS_SERIF;
			} else {
				Typeface loadedTf = null;
				if (context != null) {
					loadedTf = loadTypeface(context, fontFamily);
				}
				if (loadedTf == null) {
					Log.w(TAG, "Unsupported font: '" + fontFamily
						+ "' supported fonts are 'monospace', 'serif', 'sans-serif'.", Log.DEBUG_MODE);
				} else {
					tf = loadedTf;
				}
			}
		}
		return tf;
	}
	public static Typeface toTypeface(String fontFamily) {
		return toTypeface(null, fontFamily);
	}

	private static Typeface loadTypeface(Context context, String fontFamily)
	{
		if (context == null) {
			return null;
		}
		if (mCustomTypeFaces.containsKey(fontFamily)) {
			return mCustomTypeFaces.get(fontFamily);
		}
		AssetManager mgr = context.getAssets();
		try {
			String[] fontFiles = mgr.list(customFontPath);
			for (String f : fontFiles) {
				if (f.toLowerCase() == fontFamily.toLowerCase() || f.toLowerCase().startsWith(fontFamily.toLowerCase() + ".")) {
					Typeface tf = Typeface.createFromAsset(mgr, customFontPath + "/" + f);
					synchronized(mCustomTypeFaces) {
						mCustomTypeFaces.put(fontFamily, tf);
					}
					return tf;
				}
			}
		} catch (IOException e) {
			Log.e(TAG, "Unable to load 'fonts' assets. Perhaps doesn't exist? " + e.getMessage());
		}

		mCustomTypeFaces.put(fontFamily, null);
		return null;
	}

	public static String getDefaultFontSize(Context context) {
		String size = "15.0px";
		TextView tv = new TextView(context);
		if (tv != null) {
			size = String.valueOf(tv.getTextSize()) + "px";
			tv = null;
		}

		return size;
	}

	public static String getDefaultFontWeight(Context context) {
		String style = "normal";
		TextView tv = new TextView(context);
		if (tv != null) {
			Typeface tf = tv.getTypeface();
			if (tf != null && tf.isBold()) {
				style = "bold";
			}
		}

		return style;
	}

	public static void setAlignment(TextView tv, String textAlign, String verticalAlign)
	{
		int gravity = Gravity.NO_GRAVITY;

		if (textAlign != null) {
			if ("left".equals(textAlign)) {
				 gravity |= Gravity.LEFT;
			} else if ("center".equals(textAlign)) {
				gravity |=  Gravity.CENTER_HORIZONTAL;
			} else if ("right".equals(textAlign)) {
				gravity |=  Gravity.RIGHT;
			} else {
				Log.w(TAG, "Unsupported horizontal alignment: " + textAlign);
			}
		} else {
			// Nothing has been set - let's set if something was set previously
			// You can do this with shortcut syntax - but long term maint of code is easier if it's explicit
			Log.w(TAG,
				"No alignment set - old horizontal align was: " + (tv.getGravity() & Gravity.HORIZONTAL_GRAVITY_MASK),
				Log.DEBUG_MODE);

			if ((tv.getGravity() & Gravity.HORIZONTAL_GRAVITY_MASK) != Gravity.NO_GRAVITY) {
				// Something was set before - so let's use it
				gravity |= tv.getGravity() & Gravity.HORIZONTAL_GRAVITY_MASK;
			}
		}

		if (verticalAlign != null) {
			if ("top".equals(verticalAlign)) {
				gravity |= Gravity.TOP;
			} else if ("middle".equals(verticalAlign)) {
				gravity |= Gravity.CENTER_VERTICAL;
			} else if ("bottom".equals(verticalAlign)) {
				gravity |= Gravity.BOTTOM;
			} else {
				Log.w(TAG, "Unsupported vertical alignment: " + verticalAlign);
			}
		} else {
			// Nothing has been set - let's set if something was set previously
			// You can do this with shortcut syntax - but long term maint of code is easier if it's explicit
			Log.w(TAG, "No alignment set - old vertical align was: " + (tv.getGravity() & Gravity.VERTICAL_GRAVITY_MASK),
				Log.DEBUG_MODE);
			if ((tv.getGravity() & Gravity.VERTICAL_GRAVITY_MASK) != Gravity.NO_GRAVITY) {
				// Something was set before - so let's use it
				gravity |= tv.getGravity() & Gravity.VERTICAL_GRAVITY_MASK;
			}
		}

		tv.setGravity(gravity);
	}

	public static final int FONT_SIZE_POSITION = 0;
	public static final int FONT_FAMILY_POSITION = 1;
	public static final int FONT_WEIGHT_POSITION = 2;
	public static final int FONT_STYLE_POSITION = 3;

	public static String[] getFontProperties(KrollDict fontProps)
	{
		boolean bFontSet = false;
		String[] fontProperties = new String[4];
		if (fontProps.containsKey(TiC.PROPERTY_FONT) && fontProps.get(TiC.PROPERTY_FONT) instanceof HashMap) {
			bFontSet = true;
			KrollDict font = fontProps.getKrollDict(TiC.PROPERTY_FONT);
			if (font.containsKey(TiC.PROPERTY_FONTSIZE)) {
				fontProperties[FONT_SIZE_POSITION] = TiConvert.toString(font, TiC.PROPERTY_FONTSIZE);
			}
			if (font.containsKey(TiC.PROPERTY_FONTFAMILY)) {
				fontProperties[FONT_FAMILY_POSITION] = TiConvert.toString(font, TiC.PROPERTY_FONTFAMILY);
			}
			if (font.containsKey(TiC.PROPERTY_FONTWEIGHT)) {
				fontProperties[FONT_WEIGHT_POSITION] = TiConvert.toString(font, TiC.PROPERTY_FONTWEIGHT);
			}
			if (font.containsKey(TiC.PROPERTY_FONTSTYLE)) {
				fontProperties[FONT_STYLE_POSITION] = TiConvert.toString(font, TiC.PROPERTY_FONTSTYLE);
			}
		} else {
			if (fontProps.containsKey(TiC.PROPERTY_FONT_FAMILY)) {
				bFontSet = true;
				fontProperties[FONT_FAMILY_POSITION] = TiConvert.toString(fontProps, TiC.PROPERTY_FONT_FAMILY);
			}
			if (fontProps.containsKey(TiC.PROPERTY_FONT_SIZE)) {
				bFontSet = true;
				fontProperties[FONT_SIZE_POSITION] = TiConvert.toString(fontProps, TiC.PROPERTY_FONT_SIZE);
			}
			if (fontProps.containsKey(TiC.PROPERTY_FONT_WEIGHT)) {
				bFontSet = true;
				fontProperties[FONT_WEIGHT_POSITION] = TiConvert.toString(fontProps, TiC.PROPERTY_FONT_WEIGHT);
			}
			if (fontProps.containsKey(TiC.PROPERTY_FONTFAMILY)) {
				bFontSet = true;
				fontProperties[FONT_FAMILY_POSITION] = TiConvert.toString(fontProps, TiC.PROPERTY_FONTFAMILY);
			}
			if (fontProps.containsKey(TiC.PROPERTY_FONTSIZE)) {
				bFontSet = true;
				fontProperties[FONT_SIZE_POSITION] = TiConvert.toString(fontProps, TiC.PROPERTY_FONTSIZE);
			}
			if (fontProps.containsKey(TiC.PROPERTY_FONTWEIGHT)) {
				bFontSet = true;
				fontProperties[FONT_WEIGHT_POSITION] = TiConvert.toString(fontProps, TiC.PROPERTY_FONTWEIGHT);
			}
			if (fontProps.containsKey(TiC.PROPERTY_FONTSTYLE)) {
				bFontSet = true;
				fontProperties[FONT_STYLE_POSITION] = TiConvert.toString(fontProps, TiC.PROPERTY_FONTSTYLE);
			}
		}
		if (!bFontSet) {
			return null;
		}
		return fontProperties;
	}
	public static void setTextViewDIPPadding(TextView textView, int horizontalPadding, int verticalPadding) {
		int rawHPadding = (int)getRawDIPSize(horizontalPadding, textView.getContext());
		int rawVPadding = (int)getRawDIPSize(verticalPadding, textView.getContext());
		textView.setPadding(rawHPadding, rawVPadding, rawHPadding, rawVPadding);
	}

	public static Drawable buildBackgroundDrawable(String color, String image, boolean tileImage, Drawable gradientDrawable)
	{
		// Create an array of the layers that will compose this background.
		// Note that the order in which the layers is important to get the
		// correct rendering behavior.
		ArrayList<Drawable> layers = new ArrayList<Drawable>(3);

		if (color != null) {
			Drawable colorDrawable = new ColorDrawable(TiColorHelper.parseColor(color));
			layers.add(colorDrawable);
		}

		if (gradientDrawable != null) {
			layers.add(gradientDrawable);
		}

		Drawable imageDrawable = null;
		if (image != null) {
			TiFileHelper tfh = TiFileHelper.getInstance();
			imageDrawable = tfh.loadDrawable(image, false, true, false);

			if (tileImage) {
				if (imageDrawable instanceof BitmapDrawable) {
					BitmapDrawable tiledBackground = (BitmapDrawable) imageDrawable;
					tiledBackground.setTileModeX(Shader.TileMode.REPEAT);
					tiledBackground.setTileModeY(Shader.TileMode.REPEAT);
					imageDrawable = tiledBackground;
				}
			}

			if (imageDrawable != null) {
				layers.add(imageDrawable);
			}
		}

		return new LayerDrawable(layers.toArray(new Drawable[layers.size()]));
	}

	private static final int[] BACKGROUND_DEFAULT_STATE_1 = {
		android.R.attr.state_window_focused,
		android.R.attr.state_enabled
	};
	private static final int[] BACKGROUND_DEFAULT_STATE_2 = {
		android.R.attr.state_enabled
	};
	private static final int[] BACKGROUND_SELECTED_STATE = {
		android.R.attr.state_window_focused,
		android.R.attr.state_enabled,
		android.R.attr.state_pressed
	};
	private static final int[] BACKGROUND_FOCUSED_STATE = {
		android.R.attr.state_focused,
		android.R.attr.state_window_focused,
		android.R.attr.state_enabled
	};
	private static final int[] BACKGROUND_DISABLED_STATE = {
		-android.R.attr.state_enabled
	};

	public static StateListDrawable buildBackgroundDrawable(
		String image,
		boolean tileImage,
		String color,
		String selectedImage,
		String selectedColor,
		String disabledImage,
		String disabledColor,
		String focusedImage,
		String focusedColor,
		Drawable gradientDrawable)
	{
		StateListDrawable sld = new StateListDrawable();

		Drawable bgSelectedDrawable = buildBackgroundDrawable(selectedColor, selectedImage, tileImage, gradientDrawable);
		if (bgSelectedDrawable != null) {
			sld.addState(BACKGROUND_SELECTED_STATE, bgSelectedDrawable);
		}

		Drawable bgFocusedDrawable = buildBackgroundDrawable(focusedColor, focusedImage, tileImage, gradientDrawable);
		if (bgFocusedDrawable != null) {
			sld.addState(BACKGROUND_FOCUSED_STATE, bgFocusedDrawable);
		}

		Drawable bgDisabledDrawable = buildBackgroundDrawable(disabledColor, disabledImage, tileImage, gradientDrawable);
		if (bgDisabledDrawable != null) {
			sld.addState(BACKGROUND_DISABLED_STATE, bgDisabledDrawable);
		}

		Drawable bgDrawable = buildBackgroundDrawable(color, image, tileImage, gradientDrawable);
		if (bgDrawable != null) {
			sld.addState(BACKGROUND_DEFAULT_STATE_1, bgDrawable);
			sld.addState(BACKGROUND_DEFAULT_STATE_2, bgDrawable);
		}

		return sld;
	}

	public static KrollDict createDictForImage(int width, int height, byte[] data)
	{
		KrollDict d = new KrollDict();
		d.put(TiC.PROPERTY_X, 0);
		d.put(TiC.PROPERTY_Y, 0);
		d.put(TiC.PROPERTY_WIDTH, width);
		d.put(TiC.PROPERTY_HEIGHT, height);
		d.put(TiC.PROPERTY_MIMETYPE, MIME_TYPE_PNG);

		KrollDict cropRect = new KrollDict();
		cropRect.put(TiC.PROPERTY_X, 0);
		cropRect.put(TiC.PROPERTY_X, 0);
		cropRect.put(TiC.PROPERTY_WIDTH, width);
		cropRect.put(TiC.PROPERTY_HEIGHT, height);
		d.put(TiC.PROPERTY_CROP_RECT, cropRect);
		d.put(TiC.PROPERTY_MEDIA, TiBlob.blobFromData(data, MIME_TYPE_PNG));

		return d;
	}

	public static TiBlob getImageFromDict(KrollDict dict)
	{
		if (dict != null) {
			if (dict.containsKey(TiC.PROPERTY_MEDIA)) {
				Object media = dict.get(TiC.PROPERTY_MEDIA);
				if (media instanceof TiBlob) {
					return (TiBlob) media;
				}
			}
		}
		return null;
	}

	public static KrollDict viewToImage(KrollDict proxyDict, View view)
	{
		KrollDict image = new KrollDict();

		if (view != null) {
			int width = view.getWidth();
			int height = view.getHeight();

			// maybe move this out to a separate method once other refactor regarding "getWidth", etc is done
			if (view.getWidth() == 0 && proxyDict != null && proxyDict.containsKey(TiC.PROPERTY_WIDTH)) {
				TiDimension widthDimension = new TiDimension(proxyDict.getString(TiC.PROPERTY_WIDTH), TiDimension.TYPE_WIDTH);
				width = widthDimension.getAsPixels(view);
			}
			if (view.getHeight() == 0 && proxyDict != null && proxyDict.containsKey(TiC.PROPERTY_HEIGHT)) {
				TiDimension heightDimension = new TiDimension(proxyDict.getString(TiC.PROPERTY_HEIGHT),
					TiDimension.TYPE_HEIGHT);
				height = heightDimension.getAsPixels(view);
			}

			int wmode = width == 0 ? MeasureSpec.UNSPECIFIED : MeasureSpec.EXACTLY;
			int hmode = height == 0 ? MeasureSpec.UNSPECIFIED : MeasureSpec.EXACTLY;
			view.measure(MeasureSpec.makeMeasureSpec(width, wmode), MeasureSpec.makeMeasureSpec(height, hmode));

			// Will force the view to layout itself, grab dimensions
			width = view.getMeasuredWidth();
			height = view.getMeasuredHeight();

			// set a default BS value if the dimension is still 0 and log a warning
			if (width == 0) {
				width = 100;
				Log.e(TAG, "Width property is 0 for view, display view before calling toImage()", Log.DEBUG_MODE);
			}
			if (height == 0) {
				height = 100;
				Log.e(TAG, "Height property is 0 for view, display view before calling toImage()", Log.DEBUG_MODE);
			}

			if (view.getParent() == null) {
				Log.i(TAG, "View does not have parent, calling layout", Log.DEBUG_MODE);
				view.layout(0, 0, width, height);
			}

			// opacity should support transparency by default
			Config bitmapConfig = Config.ARGB_8888;

			Drawable viewBackground = view.getBackground();
			if (viewBackground != null) {
				/*
				 * If the background is opaque then we should be able to safely use a space saving format that
				 * does not support the alpha channel. Basically, if a view has a background color set then the
				 * the pixel format will be opaque. If a background image supports an alpha channel, the pixel
				 * format will report transparency (even if the image doesn't actually look transparent). In
				 * short, most of the time the Config.ARGB_8888 format will be used when viewToImage is used
				 * but in the cases where the background is opaque, the lower memory approach will be used.
				 */
				if (viewBackground.getOpacity() == PixelFormat.OPAQUE) {
					bitmapConfig = Config.RGB_565;
				}
			}

			Bitmap bitmap = Bitmap.createBitmap(width, height, bitmapConfig);
			Canvas canvas = new Canvas(bitmap);
			view.draw(canvas);

			ByteArrayOutputStream bos = new ByteArrayOutputStream();
			if (bitmap.compress(CompressFormat.PNG, 100, bos)) {
				image = createDictForImage(width, height, bos.toByteArray());
			}

			canvas = null;
			bitmap.recycle();
		}

		return image;
	}

	/**
	 * Creates and returns a Bitmap from an InputStream.
	 * @param stream an InputStream to read bitmap data.
	 * @return a new bitmap instance.
	 * @module.api
	 */
	public static Bitmap createBitmap(InputStream stream)
	{
		Rect pad = new Rect();
		BitmapFactory.Options opts = new BitmapFactory.Options();
		opts.inPurgeable = true;
		opts.inInputShareable = true;

		Bitmap b = null;
		try {
			b = BitmapFactory.decodeResourceStream(null, null, stream, pad, opts);
		} catch (OutOfMemoryError e) {
			Log.e(TAG, "Unable to load bitmap. Not enough memory: " + e.getMessage());
		}
		return b;
	}

	/**
	 * Creates and returns a density scaled Bitmap from an InputStream.
	 * @param stream an InputStream to read bitmap data.
	 * @return a new bitmap instance.
	 */
	public static Bitmap createDensityScaledBitmap(InputStream stream)
	{
		Rect pad = new Rect();
		BitmapFactory.Options opts = new BitmapFactory.Options();
		opts.inPurgeable = true;
		opts.inInputShareable = true;
		DisplayMetrics dm = new DisplayMetrics();
		dm.setToDefaults();
		opts.inDensity = DisplayMetrics.DENSITY_MEDIUM;
		opts.inTargetDensity = dm.densityDpi;
		opts.inScaled = true;

		Bitmap b = null;
		try {
			b = BitmapFactory.decodeResourceStream(null, null, stream, pad, opts);
		} catch (OutOfMemoryError e) {
			Log.e(TAG, "Unable to load bitmap. Not enough memory: " + e.getMessage());
		}
		return b;
	}

	private static String getResourceKeyForImage(String url)
	{
		if (resourceImageKeys.containsKey(url)) {
			return resourceImageKeys.get(url);
		}

		Pattern pattern = Pattern.compile("^.*/Resources/images/(.*$)");
		Matcher matcher = pattern.matcher(url);
		if (!matcher.matches()) {
			return null;
		}

		String chopped = matcher.group(1);
		if (chopped == null) {
			return null;
		}

		chopped = chopped.toLowerCase();
		String forHash = chopped;
		if (forHash.endsWith(".9.png")) {
			forHash = forHash.replace(".9.png", ".png");
		}
		String withoutExtension = chopped;

		if (chopped.matches("^.*\\..*$")) {
			if (chopped.endsWith(".9.png")) {
				withoutExtension = chopped.substring(0, chopped.lastIndexOf(".9.png"));
			} else {
				withoutExtension = chopped.substring(0, chopped.lastIndexOf('.'));
			}
		}

		String cleanedWithoutExtension = withoutExtension.replaceAll("[^a-z0-9_]", "_");
		StringBuilder result = new StringBuilder(100);
		result.append(cleanedWithoutExtension.substring(0, Math.min(cleanedWithoutExtension.length(), 80))) ;
		result.append("_");
		result.append(DigestUtils.md5Hex(forHash).substring(0, 10));
		String sResult = result.toString();
		resourceImageKeys.put(url, sResult);
		return sResult;
	}

	public static int getResourceId(String url)
	{
		if (!url.contains("Resources/images/")) {
			return 0;
		}

		String key = getResourceKeyForImage(url);
		if (key == null) {
			return 0;
		}

		try {
			return TiRHelper.getResource("drawable." + key, false);
		} catch (TiRHelper.ResourceNotFoundException e) {
			return 0;
		}
	}

	/**
	 * Creates and returns a bitmap from its url.
	 * @param url the bitmap url.
	 * @return a new bitmap instance
	 * @module.api
	 */
	public static Bitmap getResourceBitmap(String url)
	{
		int id = getResourceId(url);
		if (id == 0) {
			return null;
		} else {
			return getResourceBitmap(id);
		}
	}

	/**
	 * Creates and returns a bitmap for the specified resource ID.
	 * @param res_id the bitmap id.
	 * @return a new bitmap instance.
	 * @module.api
	 */
	public static Bitmap getResourceBitmap(int res_id)
	{
		BitmapFactory.Options opts = new BitmapFactory.Options();
		opts.inPurgeable = true;
		opts.inInputShareable = true;

		Bitmap bitmap = null;
		try {
			bitmap = BitmapFactory.decodeResource(TiApplication.getInstance().getResources(), res_id, opts);
		} catch (OutOfMemoryError e) {
			Log.e(TAG, "Unable to load bitmap. Not enough memory: " + e.getMessage());
		}
		return bitmap;
	}

	public static Drawable loadFastDevDrawable(String url)
	{
		try {
			TiBaseFile tbf = TiFileFactory.createTitaniumFile(new String[] { url }, false);
			InputStream stream = tbf.getInputStream();
			Drawable d = BitmapDrawable.createFromStream(stream, url);
			stream.close();
			return d;
		} catch (IOException e) {
			Log.w(TAG, e.getMessage(), e);
		}
		return null;
	}

	public static Drawable getResourceDrawable(String url)
	{
		int id = getResourceId(url);
		if (id == 0) {
			return null;
		}

		return getResourceDrawable(id);
	}

	public static Drawable getResourceDrawable(int res_id)
	{
		return TiApplication.getInstance().getResources().getDrawable(res_id);
	}

	public static Drawable getResourceDrawable(Object path)
	{
		Drawable d = null;

		try {

			if (path instanceof String) {
				TiUrl imageUrl = new TiUrl((String) path);
				TiFileHelper tfh = new TiFileHelper(TiApplication.getInstance());
				d = tfh.loadDrawable(imageUrl.resolve(), false);
			} else {
				d = TiDrawableReference.fromObject(TiApplication.getInstance().getCurrentActivity(), path).getDrawable();
			}
		} catch (Exception e) {
			Log.w(TAG, "Could not load drawable "+e.getMessage(), Log.DEBUG_MODE);
			d = null;
		}
		return d;
	}

	public static void overridePendingTransition(Activity activity)
	{
		if (Build.VERSION.SDK_INT <= Build.VERSION_CODES.DONUT) {
			return;
		}

		if (overridePendingTransition == null) {
			try {
				overridePendingTransition = Activity.class.getMethod("overridePendingTransition", Integer.TYPE, Integer.TYPE);
			} catch (NoSuchMethodException e) {
				Log.w(TAG, "Activity.overridePendingTransition() not found");
			}

		}

		if (overridePendingTransition != null) {
			try {
				overridePendingTransition.invoke(activity, new Object[]{0,0});
			} catch (InvocationTargetException e) {
				Log.e(TAG, "Called incorrectly: " + e.getMessage());
			} catch (IllegalAccessException e) {
				Log.e(TAG, "Illegal access: " + e.getMessage());
			}
		}
	}

	public static ColorFilter createColorFilterForOpacity(float opacity) {
		// 5x4 identity color matrix + fade the alpha to achieve opacity
		float[] matrix = {
			1, 0, 0, 0, 0,
			0, 1, 0, 0, 0,
			0, 0, 1, 0, 0,
			0, 0, 0, opacity, 0
		};

		return new ColorMatrixColorFilter(new ColorMatrix(matrix));
	}

	public static void setDrawableOpacity(Drawable drawable, float opacity) {
		if (drawable instanceof ColorDrawable || drawable instanceof TiBackgroundDrawable) {
			drawable.setAlpha(Math.round(opacity * 255));
		} else if (drawable != null) {
			drawable.setColorFilter(createColorFilterForOpacity(opacity));
		}
	}

	public static void setPaintOpacity(Paint paint, float opacity) {
		paint.setColorFilter(createColorFilterForOpacity(opacity));
	}

	public static void requestSoftInputChange(KrollProxy proxy, View view)
	{
		int focusState = TiUIView.SOFT_KEYBOARD_DEFAULT_ON_FOCUS;

		if (proxy.hasProperty(TiC.PROPERTY_SOFT_KEYBOARD_ON_FOCUS)) {
			focusState = TiConvert.toInt(proxy.getProperty(TiC.PROPERTY_SOFT_KEYBOARD_ON_FOCUS));
		}

		if (focusState > TiUIView.SOFT_KEYBOARD_DEFAULT_ON_FOCUS) {
			if (focusState == TiUIView.SOFT_KEYBOARD_SHOW_ON_FOCUS) {
				showSoftKeyboard(view, true);
			} else if (focusState == TiUIView.SOFT_KEYBOARD_HIDE_ON_FOCUS) {
				showSoftKeyboard(view, false);
			} else {
				Log.w(TAG, "Unknown onFocus state: " + focusState);
			}
		}
	}

	/**
	 * Shows/hides the soft keyboard.
	 * @param view the current focused view.
	 * @param show whether to show soft keyboard.
	 */
	public static void showSoftKeyboard(View view, boolean show)
	{
		InputMethodManager imm = (InputMethodManager) view.getContext().getSystemService(Activity.INPUT_METHOD_SERVICE);

		if (imm != null) {
			boolean useForce = (Build.VERSION.SDK_INT <= Build.VERSION_CODES.DONUT || Build.VERSION.SDK_INT >= 8) ? true : false;
			String model = TiPlatformHelper.getInstance().getModel();
			if (model != null && model.toLowerCase().startsWith("droid")) {
				useForce = true;
			}
			if (show) {
				imm.showSoftInput(view, useForce ? InputMethodManager.SHOW_FORCED : InputMethodManager.SHOW_IMPLICIT);
			} else {
				imm.hideSoftInputFromWindow(view.getWindowToken(), useForce ? 0 : InputMethodManager.HIDE_IMPLICIT_ONLY);
			}
		}
	}

	/**
	 * Run the Runnable "delayed" by using an AsyncTask to first require a new
	 * thread and only then, in onPostExecute, run the Runnable on the UI thread.
	 * @param runnable Runnable to run on UI thread.
	 */
	public static void runUiDelayed(final Runnable runnable)
	{
		(new AsyncTask<Void, Void, Void>()
		{
			@Override
			protected Void doInBackground(Void... arg0)
			{
				return null;
			}
			/**
			 * Always invoked on UI thread.
			 */
			@Override
			protected void onPostExecute(Void result)
			{
				Handler handler = new Handler(Looper.getMainLooper());
				handler.post(runnable);
			}
		}).execute();
	}

	/**
	 * If there is a block on the UI message queue, run the Runnable "delayed".
	 * @param runnable Runnable to run on UI thread.
	 */
	public static void runUiDelayedIfBlock(final Runnable runnable)
	{
		//if (TiApplication.getInstance().getMessageQueue().isBlocking()) {
		if (TiMessenger.getMainMessenger().isBlocking()) {
			runUiDelayed(runnable);
		} else {
			//Handler handler = new Handler(Looper.getMainLooper());
			//handler.post(runnable);
			TiMessenger.getMainMessenger().getHandler().post(runnable);
		}
	}

	public static void firePostLayoutEvent(TiViewProxy proxy)
	{
		if (proxy != null && proxy.hasListeners(TiC.EVENT_POST_LAYOUT)) {
			proxy.fireEvent(TiC.EVENT_POST_LAYOUT, null, false);
		}
	}

	/**
	 * To get the redirected Uri
	 * @param Uri
	 */
	public static Uri getRedirectUri(Uri mUri) throws MalformedURLException, IOException
	{
		if (Build.VERSION.SDK_INT < TiC.API_LEVEL_HONEYCOMB &&
				("http".equals(mUri.getScheme()) || "https".equals(mUri.getScheme()))) {
			// Media player doesn't handle redirects, try to follow them
			// here. (Redirects work fine without this in ICS.)
			while (true) {
				// java.net.URL doesn't handle rtsp
				if (mUri.getScheme() != null && mUri.getScheme().equals("rtsp"))
					break;

				URL url = new URL(mUri.toString());
				HttpURLConnection cn = (HttpURLConnection) url.openConnection();
				cn.setInstanceFollowRedirects(false);
				String location = cn.getHeaderField("Location");
				if (location != null) {
					String host = mUri.getHost();
					int port = mUri.getPort();
					String scheme = mUri.getScheme();
					mUri = Uri.parse(location);
					if (mUri.getScheme() == null) {
						// Absolute URL on existing host/port/scheme
						if (scheme == null) {
							scheme = "http";
						}
						String authority = port == -1 ? host : host + ":" + port;
						mUri = mUri.buildUpon().scheme(scheme).encodedAuthority(authority).build();
					}
				} else {
					break;
				}
			}
		}
		return mUri;
	}
}

redpajama_set_name: RedPajamaGithub


Oscar Generale Productions boasts a growing list of credits that include "Give Ém Hell Malone" directed by Russell Mulcahy with Thomas Jane and Elsa Pataky; "Casino Jack"directed by George Hickenlooper and starring Kevin Spacey & Kelly Preston; "Tokarey" starring Nicholas Cage & Danny Glover: "Yellow" directed by Dario Argento starring Adrien Brody and Emanuelle Seigner: and Adrien Brody BMW Motorrad's "Ride of your Life" Campaign.
Yet another product placement deal is underway between Oscar Generale and Matteo Perin, a designer from a small town near Verona in Italy. Matteo Perin is a bespoke fashion House that designs luxurious bespoke wardrobes for international celebrities, business leaders and high-life living individuals who share his love for rich Italian cultural fashion influence imbued into every piece that he creates. His clients have an appreciation for unique customization of style, fashion and elegance and this is exactly what Matteo provides when conceptualizing every item that he designs. John Travolta and Al Pacino are a few of his esteemed clients and there are many more. His service is completely unique and is a one-on-one private experience for clients who have a passion for bespoke clothing, formal and casual shoes, leisure wear, accessories, travel cases and jewelry. You have the option of a single design piece or the creation of an entire wardrobe for your needs and lifestyle.


We offer professional, inviting profiles to help our members be seen by more clients.
Being Seen will use our Google marketing budget to advertise your practice in your city through Google's AdWords program. Additionally, we will cross-promote with our parent site, Open Path. Open Path receives over 50,000 unique visitors each month.
A lifetime 20% discount off of 160+ online CE courses through the Zur Institute. The discount also applies to all of the Institute's pre-licensing courses and private practice materials.
A training video each month from a master therapist courtesy of our friends at Psychotherapy.net. Learn from psychotherapy greats like Sue Johnson, Irvin Yalom, and many more.
Free lifetime access to Open Path's online wellness platform and our Cognitive Behavioral Therapy for Insomnia course. Provide your clients with a free membership that will allow them to take as many online wellness courses as they wish.
Unlimited access to our practice building videos. Personal videos from more than 12 different practice building professionals offer advice for starting, strengthening, or maximizing your private practice.
Want to learn more about our incentives? Click here.
Being Seen members are part of a select community of like-minded practitioners. Membership is limited based on the number of people in a given area — in a city of 100,000 people, only 200 therapists will be accepted for membership. This allows us to focus on promoting your unique practice, rather than directories that simply promote an endless number of listings.
As a Being Seen member, you will have the opportunity to be a featured therapist on beingseen.org.
As a nonprofit organization, we are not in this to make ourselves wealthy. We believe in supporting therapists in private practice, and part of that involves offering highly useful services at very reasonable prices. Being Seen charges a one-time payment of $100 for Open Path members and $150 for non-Open Path members. You'll be hard pressed to find a directory site with our level of quality for these prices. Learn more about our membership options here.
While Open Path and Being Seen are two separate programs, every penny that you spend advertising your profile on Being Seen goes to support our mission to make psychotherapy more affordable and accessible around the country. This means that you can advertise your full-fee and insurance-based practice while helping to make psychotherapy more attainable to an ever-growing number of uninsured and underinsured Americans. To learn more about our parent organization, please visit Open Path Psychotherapy Collective.


Tradesman Tenterden: Trying to track down inexpensive tradesmen? Anytime you've building or home improvement tasks in your residence or place of work in Tenterden, Kent, you will without question be trying to find a dependable and reasonably priced tradesman that you could possibly retain the services of to carry out the venture. When seeking a Tenterden tradesman we recommend that you check out Rated People the finest customer reviewed trade online site in the UK. Here you are able to get several replies from local Tenterden, Kent tradesmen, keen to set about your project.
A large selection of Tenterden home improvement jobs can be undertaken like: wall building, boiler servicing, door hanging, floor sanding and finishing, gardening and landscaping, electrical work, new door locks, pest control and numerous comparable jobs.
You could perhaps also track down a tradesman in further nearby towns, villages and hamlets: St MIchaels, Ashenden, Appledore, Sandhurst, Shadoxhurst, Benenden, Woodchurch, Wittersham, Sissinghurst, Parkgate, Rolvenden, Haigh Halden, Biddenden, Rolvenden Layne and areas within easy reach of Tenterden, Kent.
Thus on any occasion you are needing door replacement in Tenterden, electrical sockets fitted in Tenterden, hedge lopping in Tenterden, polished concrete floors in Tenterden, hanging of doors in Tenterden, power showers in Tenterden, or stonework in Tenterden, make sure you contemplate Rated People, the finest location to get quotes from recommended tradesmen, whether or not you are searching for a cheap or a dependable tradesman.


We're up in Atlanta for the weekend celebrating Sarah's birthday and this was the scene this morning.
Everything's coated in ice and will be until sometime tomorrow afternoon when the temperature gets up a little over freezing…. As usual around here, everything is pretty much shut down as people just aren't prepared to drive around with the roads in this condition and there just isn't the equipment to keep the roads clear like in cities a litle more used to this type of weather.


Books. Those handy little tomes of information popularized by Gutenberg's printing press.
As college students, we all need them. But for some, they aren't easily obtained.
Every four months when a new semester rolls around, we students are faced with a plethora of new classes requiring new textbooks, and those often don't come cheap, sometimes going for as much as $70 to $80 a pop.
With the $150-plus tuition fees that many of us have to pay, that's almost enough to force you to sell your firstborn child into slavery or sign away your soul to the devil just to get that U.S. history book or the textbook and three novels you need for English 1A rather than work another six months at McDonald's scrounging for every little penny.
If you're looking for a cheaper alternative for your textbook purchases, The Rip may be able to help.
We have launched a new feature on the Web site called the Bookseller.
Developed with the monetarily challenged college student in mind, the Bookseller is a special section on our site where we will post ads for used textbooks, sort of like what you might see on the bulletin boards around campus, but in one easy-to-locate area.
And the best part is that we're offering this as a free service to the students of Bakersfield College.
To post your free ad, all you have to do is register and log in. Then, submit your book information through our Letters to the Editor section.
Be sure to include the full title of the book, the course that the book is from, the price you want for it, your name and a telephone number or e-mail address so that interested buyers can contact you. Please include "Bookseller" in the subject line.
In the future, The Rip hopes to provide additional useful features, like the Bookseller, to the students through the online edition, but we can only do that if you tell us what you want.
We encourage you to e-mail any comments or suggestions for other features you'd like to see to [email protected].


...but motor vehicle crashes are the second leading cause of unintentional-injury-related death overall.
Impaired driving, distracted driving, speeding and inexperience can cause a life to be cut short in the blink of an eye.
In 1993, in response to several years of devastating car crash fatalities within our mountain area the community came together, declaring 'No More!'. Since then, Drive Smart of the Rockies has achieved sustainability and received national, state and local recognition for its work.
We strive to create cultural change through education and creating awareness. We encourage everyone to take responsibility in making our roads safe through adopting and modeling safe driving practices whether as a driver, rider or passenger.


I'll keep trying to qualify for the U.S. Women's Mid-Amateur, but even from the sidelines, this is quickly becoming my favorite USGA championship.
Allison Brown, one of college golf's own, is the new head rules official for NCAA Division I women's golf. Get to know Brown, her theory on course setup and how she likes to approach on-course rules questions.
In this week's College Notebook, read the story behind a bunch of Cowgirls who have become birdie machines, find out who was missing from competition this week and get to know Arizona transfer Bianca Pagdanganan.
Thank you for subscribing to Beyond The Sunday Driver!


Roccetta Fiorita , The holiday home has maintained the characteristics of a distant time uniting the functionality of modern times . Beams and exposed rocks and a warm parquet are enlivened with modern kitchens and functional , hairdryer , satellite televisions . All this makes the place nice for couples and families The Osteria San Martino is the ideal place to spend in complete harmony and tranquility a wonderful evening , where style is at home. We are pleased to welcome welcoming you in a nice , relaxing and highly sought.
The Osteria San Martino is the ideal place to spend in complete harmony and tranquility a wonderful evening , where style is at home. We are pleased to welcome welcoming you in a nice , relaxing and highly sought.


text:
High School Standout Performers: Nov. 30 - Dec. 5
Jackson Fuller
Each week, area high school coaches are asked to submit a list of standout performers from their team from the previous week's games. Part of that list will be appear in Monday's print edition. If your child's name – or anyone from your child's team – doesn't appear on the list, please encourage your coach to get email their submissions to Jackson.Fuller@StarNewsOnline.com before noon each Sunday.
Here are the nominees for Athlete of the Week.
Greg Bowden, Wilmington Christian Academy boys basketball: Bowden scored a game-high 15 points to go along with five rebounds Friday as the Patriots earned a narrow 49-48 victory over Alamance Christian.
Gracie Sistrunk, Hoggard volleyball: Hoggard head coach Ron Strickland described Sistrunk as 'unconscious' this week, totaling 17 kills, five aces and five blocks in wins over North Brunswick and Topsial.
In a 3-0 victory over the Pirates Thursday, Sistrunk had 12 kills, two solo blocks and three double blocks with a .556 hitting percentage.
Isaiah Arnold, Ashley cross country: Arnold put together another sub-16 performance Thursday, crossing the finish line in 15:56.66 and outlasting the competition at a dual meet with Laney.
Behind Arnold, Ashley's boys continued their impressive start to the season with a 22-point win over Laney.
Megan Tamisiea, New Hanover volleyball: Tamisiea continued her dominant start to the 2020 season this week with 43 kills, 27 digs and four blocks.
Tamisiea now has 113 kills in just six matches, with the Wildcats sitting atop the MEC standing at 5-1.
Here are more standout performers from the previous week of high school sports.
Cecelia DiBlasi, Ashley: DiBlasi broke 19 with a time of 18:59.70, finishing as the runner-up at a dual meet with Laney.
However, DiBlasi's performance helped the Screaming Eagles pull off a team victory over Laney by eight points.
Nathan Harms, North Brunswick: Harms smashed his previous personal record by 30 seconds, finishing a race against Hoggard with a time of 18:45.
Olivia Bufalini, Laney: Bufalini won another race Thursday, outlasting the competition in a dual meet with Ashley and crossing the finish line with a time of 18:46.17.
Brennen Pierce, Hoggard: Pierce earned his first individual victory of the season Thursday in a meet against Topsail, New Hanover and North Brunswick with a time of 16:33.47.
Brooke Osterhoudt, Laney: The talented sophomore combined for 10 Kills, seven blocks, 11 digs through during two wins over South Brunswick and North Brunswick.
"(Osterhoudt) is an integral part of our defense and middle offense," Laney head coach Tod Bonello said.
Oliva Garzelloni, Topsail: In games vs Hoggard and West Brunswick, Garzelloni recorded five aces, 14 points, 13 kills and 20 digs at the outside hitter position.
Caroline Richardson, South Brunswick: Richardson had 15 kills and nine aces as the Cougars went 1-1 this week, beating North Brunswick 3-0 Tuesday before a loss to Ashley on Thursday.
Gavin Guion, Cape Fear Academy: Guion was the leading scorer for the Hurricanes in Friday's 68-27 win over Parrott Academy, scoring 16 points. Guion scored 14 points in the first half as Cape Fear Academy pulled away for an easy victory.
Reporter Jackson Fuller can be reached at Jackson.Fuller@StarNewsOnline.com or 910-343-2262.


Cheap tickets for Indiana Hoosiers are available at ticketexecutive including NCAA tickets. When you purchase Indiana Hoosiers tickets here including for events appearing in many cities including Bloomington, Lexington, Ann Arbor, Indianapolis, East Lansing and more, you can save lot money. If you live in Bloomington and looking for cheap Indiana Hoosiers tickets, then you have come to the right place.
Go & Get your Indiana Hoosiers Tickets Now!
Kentucky Wildcats vs. Indiana Hoosiers tickets in Lexington, KY at Kentucky Proud Park on Tuesday May 7, 2019.
Michigan Wolverines vs. Indiana Hoosiers tickets in Ann Arbor, MI at Ray Fisher Stadium on Saturday May 11, 2019.
Indiana Hoosiers tickets- Get Yours Today!
Shipping & availability when purchasing cheap Indiana Hoosiers tickets online with the University Park leading ticket broker that specialize also in Victory Field hot events tickets as well as Indianapolis, College Park and Lincoln hot events.ticketexecutive.com is a licensed University Park ticket broker that buys and sells Indiana Hoosiers tour tickets, in addition to all Indianapolis, Ann Arbor and College Park important events tickets including Victory Field events.