The Horn River Basin in northeast B.C. is a low permeability shale gas play with gas-in-place estimates ranging from 100 to 600 Tcf. As with other shale gas plays in Canada and the U.S., production from the Horn River Basin is now possible with the advent of horizontal drilling and hydraulic fracturing; however, due to its remote location, the Horn River faces additional challenges and costs. Additionally, stimulation plans in this play are very aggressive, requiring downhole equipment which can accommodate high pump rates and pressures, as well as large temperature differences between stimulation and production fluids.
An operator working in the Horn River Basin wanted to efficiently fracture their open hole horizontal wells in multiple stages. Because the costs of operating in the Horn River are greatly inflated compared to wells in more accessible regions, use of a time-effective, streamlined completion was essential to their return on investment. Because the operator used the Packers Plus StackFRAC® system to maximize their assets in the Bakken, Cardium and Montney, it was a natural fit for them to look to Packers Plus for an efficient completion solution for their Horn River wells.
The Packers Plus QuickFRAC® system is a batch fracture technology that enables operators to increase the number of fracture stages in a single stimulation treatment. Using limited entry diversion techniques and proprietary technology, the QuickFRAC system allows fracturing of several isolated stages at one time. Through a detailed process of research and development, and by using consistent pumping rates, this system will evenly distribute the treatment in a select zone of the wellbore. The benefits achieved with this system are faster completion times and reduced fracturing fluids resulting in cost savings and less environmental impact.
The operator also felt that by allowing multiple stages to be stimulated simultaneously, the horizontal stress of the formation would be increased more than if only one fracture at a time were undertaken. This increase in horizontal stress would then enhance breakdown of the rock. Additionally, as the fractures create high pressure waves against each other they would force lower pressure areas of the reservoir to attract fracture growth and create further networks outward from the fracture initiation point.
A 20-stage QuickFRAC system was designed so the entire lateral could be stimulated with seven treatments. The first treatment stimulated the toe stage via a Hydraulic FracPORT™ sleeve. The six remaining treatments stimulated 3 – 4 isolated stages at a time through QuickPORT™ sleeves. The continuous operation required dropping only seven balls to stimulate all 20 stages. This decreased the amount of fluid required to displace the balls resulting in reduced proppant overdisplacement for improved near-wellbore conductivity.
The 20-stage slickwater treatment was pumped continuously in only 10 hours and placed a total of 840 tonnes (1,850,000 lb) of proppant and 8,740 m3 (55,000 bbl) of fluid. This equates to approximately 42 tonnes (92,600 lb) of proppant per stage. Treating rates averaged 14.5 m3/min (90 bpm) at 54 MPa (7,800 psi).
Operators working in unconventional reservoirs continue to seek time and cost reduction strategies to maximize their assets. The considerable time savings achieved using the QuickFRAC system not only achieves cost savings on the stimulation operation, but also increases productivity of frac crews in the region. Packers Plus systems have proven to be the most efficient, cost effective method to complete multi-stage horizontal wells and have been shown to provide superior production results in numerous formations worldwide.


Bringing up Charlie: Lord, preserve us!
Remarkably, it isn't a hoax. Apparently the British Library is ensuring sites like mine aren't lost in the ether of ephemera that is the internet. As they say, 'Thousands of UK websites have been collected since 2004 and the Archive is growing fast.' Visitors can, '...see how sites have changed over time, locate information no longer available on the live Web and observe the unfolding history of a spectrum of UK activities represented online. The Archive contains sites that reflect the rich diversity of lives and interests throughout the UK.' Including, apparently, the random jottings of stay-at-home dads.
Which reminds me, I have yet to reply. Not that I'm having any doubts about agreeing. Far from it! Although it does rather make your fingers linger slightly longer over the computer keyboard knowing that what you are about to write is likely to be preserved ad infinitum, read by the scholars of the future and picked over for the tiniest clue about what life was like as a dad in the twenty-first century. It's makes each post rather like burying a time capsule: what to include? What to leave out? And why?
Of course, as they've already selected the site they're well aware of the eclectic range of topics that my bird-like brain alights upon to turn into a blog-post. But the concept of having your words read long into the future, when the world you inhabit no longer exists, when the things you hold dear no longer have meaning and the very medium you write in is as outdated as a typewriter is as fascinating as it is frightening. I'm going to give some thought to what I'd like to tell my readers of the future. And I'm asking for your suggestions, too. What should we tell a historian of the future about blogging, parenting and writing? Can we know now, in the middle of it all, what will be important in fifty or a hundred years time? And what, if anything, would you like to edit out?!


text:
José Luis Moreno Torres (Madrid, mayo de 1968) es un político español.

Biografía
Fue director de Juventud y Deportes en el distrito madrileño Puente de Vallecas y, posteriormente, director del Centro Cívico 'El Pozo' del popular barrio del Pozo del Tío Raimundo. Ha sido concejal del Partido Popular en el Ayuntamiento de Getafe y portavoz del Grupo Municipal desde el año 1995 hasta julio de 2007. Fue presidente de la Comisión de Seguridad Ciudadana de la Federación de Municipios de Madrid del año 1999 a 2007. También fue, del 2007 al 2011, director General de Infraestructuras y Servicios de Educación en la Comunidad de Madrid., También fue director general de Empleo de la Comunidad de Madrid hasta diciembre del año 2012. Actualmente es gerente de la Fundación Democracia y Gobierno Local.

En lo político ha sido presidente de NNGG del PP en el distrito de Puente de Vallecas, vicesecretario de NNGG de la Comunidad de Madrid, vicepresidente del Partido Popular en el distrito de Puente de Vallecas. Desde marzo de 1996  hasta octubre de 2008 ha sido presidente del Partido Popular de Getafe. Fue miembro del Comité Ejecutivo del PP de la Comunidad de Madrid y secretario regional de Acción Social del PPCM. Ha publicado, hasta la fecha, dos libros: Diario de un blog (2007), Cuando el silencio me llama (poesía, 2008) y ¿Por qué no te lees? (2013).

Fundador de Entrenador Integral Services y #versosdArte.

Referencias

Enlaces externos

Políticos del Partido Popular
Nacidos en Madrid

redpajama_set_name: RedPajamaWikipedia


The perfect choice for serving delicious lasagne straight from the oven to the table, this beautifully designed World of Flavours large stoneware baking dish features decorative fluted sides making it the perfect choice for your Italian themed dining experience. Impress your guests with exquisitely presented Italian dining, ideal for a variety of cooking, preparing and serving functions, particularly baking lasagne, cannelloni and pasta bake.
A medium size lasagne dish is also available within this range (KCLDISHMED).


text:
About GRI
Technology and infrastructure
Debate Corner
Future Generator
Global Risk Outlook
Forecasting China's anti-corruption campaign
by Ian Armstrong	,	August 30, 2015
China's recent economic struggles will mean a serious re-examination of existing policies by Beijing, including the ongoing anti-corruption campaign. In the coming 12 months, China will continue its anti-graft efforts while avoiding structural reform.
The Chinese economy has not had a smooth summer. Between the general slowing of economic growth, the recent plummet of the stock market, and the subsequent devaluation of the renminbi, the "Chinese dream" is now appearing more elusive than initially anticipated.
In light of this, there is now more reason than ever to re-evaluate the existing policies out of Beijing — including those that only indirectly influence the economy. President Xi Jinping's recent and highly publicized anti-corruption campaign poses one of the more complex decisions for Beijing's policymakers in the coming 12 months.
Corruption in China
The corruption that has persisted in China – and actually increased in tandem with its economic rise – has been traditionally focused in facets of the economy where the state has been extensively involved, including real estate, financial services, infrastructure, and land-user rights. The forms of corruption have also been numerous and include graft, patronage, embezzlement, and statistical falsifications.
While corruption has often been cited as a driver for China's unprecedented rates of growth, corruption is in fact a hindrance to stable economic growth – the kind of growth that, if established, would circumvent many of China's current economic woes.
Indeed, a report from the Carnegie Endowment asserts that direct economic losses due to corruption represents "a large transfer of wealth… to a tiny group of elites" – roughly 3% of GDP each year. Moreover, corruption in China is an underlying cause of economic inefficiency and instability that, if left unsolved, could help turn the current crisis into a future collapse.
A Campaign of contradictions
When he came to power in 2012, President Xi sought to address corruption in what has since become a highly publicized, highly popular anti-graft campaign. The government has since sought to expunge China of corruption at all levels of the 90 million strong Communist Party of China (CPC), with the president vowing to take down both the high-level "tigers" and low-level "flies" engaging in corrupt behavior.
Statistically speaking, the campaign has been a success. Since Xi took office, the campaign has resulted in 414,000 CPC officials being disciplined for corruption – with roughly half (201,600) of those officials actually being prosecuted for corruption in court. In 2014 alone, China officially carried out anti-corruption cases against 68 high-level officials, with more than 70,000 officials also punished for violating anti-graft rules.
Yet, while it initially appears that China has begun to make serious gains in reducing the corruption within, the Transparency International 2014 Corruption Perceptions Index concluded that China actually became more corrupt in 2014 than in 2013. This puzzling development can be attributed to the fact that Xi has focused on instilling fear and purging the existing corruption rather than addressing its institutional causes via more legal and structural reform.
China has since sought to address this, with Xi asserting that the CPC now needs to intensify legal and institutional efforts to strike against corruption at its root. However, in light of China's recent economic downturn, the so-far popular president will likely reassess the strengths and weaknesses of the campaign to date, as well as the potential impacts of future plans, with the more significant and ambitious structural reforms hanging in the balance.
Anti-Corruption as Anti-Growth
Since China's anti-corruption campaign was launched, some have asserted that the effort has in fact hurt China, contributing to its slowing economy, due to significant drops in luxury industries, such as five-star hotels. Indeed, the declines in said industries, as well as the negative correlation between the campaign and China's slowed growth, suggest that corruption mildly enhanced China's short-term economic gains. This revelation in turn acts as evidence in favor of halting the initiative for the duration of the prevailing economic slowdown.
However, it is Xi's suggested institutional reforms that will impose a more significant burden on China's already slowing economy. Reforms of any kind are costly, and a reformation of China's established and complicated legal system and governance structure would certainly entail serious economic growing pains as the Chinese government finances the transition.
In an already unstable economic environment, Beijing might seriously consider holding off on these costly reforms.
The Economic benefits of Anti-corruption campaigns
Though corruption might have contributed to short-term economic gains, a historical overview of developing economies demonstrates that corruption ultimately stimulates socioeconomic inequality, distorts true economic indicators, undermines economic institutions, reduces efficiency, and increases the risk of a "full-blown crisis" – quite similar to the prevailing economic realities in China today.
The continued prosecution and removal of corrupt officials has actually lowered the cost of living for the average Chinese citizen, freeing up money for increased consumption by average citizens that would otherwise be sacrificed as extra "fees," or bribes.
Though legal and structural reforms are costly and require potentially painful transitioning periods, the inherent inequality that comes with corruption makes it in fact harmful for long-term growth and largely incompatible with the kind of consumer-led economic growth China is seeking to achieve. Under Xi's proposed investigation into the legal aspects of corruption, China may endure short-term pains, but would ultimately emerge a more dynamic economic force.
Forecast for the next 12 months
Given the emerging economic problems facing China's economy, President Xi will continue to hold steady on the low-level "flies," while also mounting a greater effort at publicly taking down high-level "tigers." The publicity that naturally comes with high-level scandals will further consolidate the power of the Xi Administration, and help maintain confidence in the government's ability to amend the recent economic downturn.
At the same time, Xi will largely avoid the kinds of policies and legal reforms he has previously mentioned and continue to ignore the institutionalization of corruption in the Chinese government. A quiet hold on these reforms will allow Beijing to postpone their innate financial burden and instead direct those funds towards other more immediate stimulus measures.
Categories:	Asia Pacific, Politics
Tags:	China, Communist Party of China, consumer spending, Corruption, Economic growth, legal reform, Xi Jinping
Ian Armstrong
Ian Armstrong is Commissioning Editor and Senior Analyst at GRI. He also serves as the Geostrategy and Diplomacy Fellow at Young Professionals in Foreign Policy. Previously, Ian assisted in research at Temple University, the University of Pennsylvania, Scottish Parliament, and Hudson Institute's Center for Political-Military Analysis, where he has focused on non-proliferation and international energy. Ian's analysis has been featured at prominent outlets such as Huffington Post, Business Insider, Foreign Policy Association, CBS News, and RealClearEnergy.
South Korea's economy: Why the North won't sink it
Reasons a currency war could still be on the horizon
One Chinese size fits all? Response to Allison and Blackwill
More Carrot? A Response to Robert S. Ross
If Abenomics is to succeed
U.S. policy for Myanmar's 2015 election
Malaysia's looming general election: what it means for the economy
Thailand: Infrastructure or indictment
Sign up for your FREE Weekly Risk Briefing
Find an Article:
Serbia: Between Russia and the West
Bosnia: Humanitarian crisis and EU aspirations
Zimbabwe's President Mnangagwa: One Year Later
Prospects for EU-ASEAN Security Ties
Iraq: The Political Economy of Corruption
Will Drones Push the Middle East Past the Point of No Return?
Guest Post: Jacinda Ardern Backing Social Media Ethics
Parliamentary elections in Kosovo
Economic slowdown and China's green future
Is a new revolution on the horizon in Tunisia?
Click here to read GRI's Terms of Use
© 2017. Global Risk Insights LLP. All rights reserved. Theme by Orane-Themes.com.
Global Risk Insights

redpajama_set_name: RedPajamaCommonCrawl


text:
Video: Family, friends gather at vigil for Kelli Zachery, who died in traffic collision
After meeting at her father's Southwest Berkeley home, the group walked across the street to San Pablo Park to remember the 27-year-old who was on the way to work when she died.
by Tracey Taylor Feb. 16, 2018, 9:09 a.m. October 4, 2022
Family and friends gathered Thursday evening at the Ward Street home of the father of a 27-year-old woman who was killed last week in a traffic collision on Ashby Avenue.
Kelli Zachery, 27, was driving to work when her car collided with an AC Transit bus around 6:30 a.m. on Thursday Feb. 8. The bus and car then careened into a parked truck and two homes on the south side of Ashby near California.
After meeting outside Kelvin Zachery's home, where a Valentine's Day memorial had been set up for Kelli on Wednesday, the 70-strong group walked across the street to San Pablo Park. They lit candles and walked around the perimeter of the park, passing an outdoor boxing class and a group playing soccer, before gathering on the basketball courts.
Once settled there, Kelli's mother and father released two large bunches of pink balloons at precisely 6:28 p.m. Kelvin Zachery said that was because Kelli had died at 6:28 a.m., at the moment of the crash. He asked that everyone remember her every Feb. 8 at that time, and sent his thoughts and prayers to the driver of the bus that crashed into the red Honda Civic his daughter was driving a week before. Zachery, who led the sunset vigil, has been an AC Transit driver himself for 25 years.
See the gathering and hear Kelvin speak about his daughter in the video above, shot by Tracey Taylor.
Woman, 27, dies after AC Transit bus and car collide, crash into Ashby Ave. homes
Cyclist sustains serious injuries after vehicle crash
A tragic death in Berkeley spurs funds for traffic beacons
Tagged: AC Transit, Ashby Avenue, Berkeley Fire Department, Berkeley Police, Fatal Accident Investigation Team, Fatalities, South Berkeley, Traffic, Traffic collisions, Traffic safety
Tracey Taylor
tracey@citysidejournalism.org
Tracey Taylor is co-founder of Berkeleyside and co-founder and editorial director of Cityside, the nonprofit parent to Berkeleyside and The Oaklandside. Before launching Berkeleyside, Tracey wrote for... More by Tracey Taylor


text:
Riviera At Work - In Southern Gamefish Tournament
01 Jan 2017, 23:31 Boat Reviews/Brochures 79 likes 2629 views
For Tasmanian-based Riviera skippers Ron O'Connor (Riviera 43' 'Royale II') and Greg Plunkett (Riviera 36' 'The Specialist') the St. Helens Gamefishing tournament staged over the last weekend of February will remain memorable for different reasons. Ron O'Connor and his crew will recall the marlin they lost; Greg Plunkett and his team will forever remember the tough fight they were given by a 56kg (124lbs) Mako.
Tough fight? Believe it, the Mako not only bent a gaff sadly out of shape, but also saw 'The Specialist's' marlin board as being a likely snack, helping itself to a chunk of fine quality Riviera fibreglass! St.Helens is one of the prime fishing 'hot spots' off the north east coast of Tasmania, Australia's island State. It's about 150 nautical miles from the capital, Hobart. The tournament staged was an Open Class event, no line classes and any tackle allowed.
A strong field comprising 84 boats entered for the event. Although the field comprised primarily trailerboats, Hobart Riviera dealer, David Mayne (Mayne's Marine), said the interest being shown by owners of larger craft was definitely on the increase. Ron O'Connor and Greg Plunkett are keen boaters and spend as much time as possible aboard their respective craft. 'The Specialist', powered by 3116 Caterpillar Marine Diesels, is in her sixth season; 'Royale II', a pair of 450hp Cummins Marine Diesels in her engine room, is a younger vessel, just 18 months old. Both, of course, were sold by Mayne's Marine. It's a safe bet that future Mayne's Marine customers, on taking delivery of their Riviera, will be made aware of the St.Helens Gamefish tournament.


Surrounded by some of the most beautiful mountains in Snowdonia National Park, ScoutsCymru's Yr Hafod is the ideal base to explore this stunning area of North Wales.
Fancy an adventurous weekend in the mountains for your Explorer Unit?
2019 bookings are full. We run open training and qualifying expeditions for DofE Gold and the Queen's Scout Award.
Need to contact someone else at Yr Hafod? Check out our full contacts page.
For hostel booking enquiries please get in touch below, don't forget to include a contact email and phone number!
For more details and to check availability please visit our accommodation page. If you have any questions please phone 0845 519 6113.


Bonuses are a great way of appreciating and motivating players to play in a given casino. To ensure that casino bonuses are implemented to the satisfaction of both the players and the casino, it is imperative to have rules. These rules are cross-cutting and cover all aspects of casino bonuses. Before exploring on the casino bonus rules, it is important to note that each player should carefully read the casino terms and conditions they chose to play in. This should always be the first step as terms, and conditions essentially govern casino bonuses. That said, this article reviews the general rules on casino bonus, so as to inform you on what to expect. If you are just getting started, we recommend to check our casino bonuses guide for beginners.
Casinos are very strict on bonuses. Remember that casinos are primarily founded for the purposes of making profits, and thus will never tolerate players who go against the laid down rules of play. Contravening rules can result in forfeiting the bonuses.
When playing online, the only time to request for a payout is when you have successfully completed the stipulated play through. If it happens that you request a payout before you have fulfilled the required, you will end-up losing the casino bonus left- just like that. So you better be careful.
According to this rule, bonuses will only be offered to one computer I.P address; one registered email address, bank account, address, and credit number among others. This rule, however, has an exception if the game is played using the multi-player game option.
In situations where there is a dispute on an issue related to the bonus, the decision of the manager is considered as final.
Promotional bonuses cannot be redeemed for cash, unless the casino states otherwise. To claim a promotional bonus, a player is required to redeem the bonus before placing a bet with the deposited money. In addition, promotions cannot be used in conjunction with one another, if a player does this, the win will be void.
This rule stipulates that only new players are eligible to receive this bonus. However, if a player fails to complete the wagering requirements before requesting the withdrawal, it will result in the bonus being declared void.
A common characteristic of the No deposit bonus is that a high wagering requirement is required such as the 40× or 50× the bonus amount on offer. In addition, there is a maximum cash-out amount on the actual bonus.
Coupons are considered as part of the promotional bonuses and as such are place into the accounts of players. Once characteristic of this bonus is that they have a high limit value and is based on the percentage as per the deposit is made.
These bonuses are only provided after a specific and special arrangement. These bonuses are characterized by real money transactions often with no requirement for wagering. This makes it possible to play for real money or make a withdrawal immediately.
Before cash outs can be processed, a player will be required to provide documents for the purpose of identity verification. The casino can further ask for more documents to prove your identity.
A casino reserves the right to cancel a bonus in cases the terms and conditions are violated in situations where an infringement of the terms and conditions occurs.
Why has everyone got Rainbow Riches fever?
Let's talk about no deposit bonus offers and what exactly you should be aware of when claiming?


text:
La Kreiz Breizh Elites Dames, de son nom complet Tour de Belle Isle en Terre-Kreiz est une course cycliste féminine française. Créée en 2018, elle fait partie du  calendrier de l'Union cycliste internationale en catégorie 1.2.

Palmarès

Lien externe

Compétition cycliste féminine


Here's the 8 Courageous Canines Nominated for America's Next Hero Dog!
This fall, the American Humane Association Hero Dog Awards will be hosting their annual campaign that showcases the good works of both canine & handler. This nationwide competition chooses a dog from eight different categories: Law Enforcement Dogs, Service Dogs, Arson Dogs, Military Dogs, Search and Rescue Dogs, Guide/Hearing Dogs, Therapy Dogs, and Emerging Hero Dogs. Each of the eight finalists has already earned $2500 to donate to their charity of choice but the Hero Dog Award Winner will also get an additional $5000 to donated as well.
The public is encouraged to submit 1 vote a day until voting ends on August 24th and the 2-hour awards show will air on the Hallmark Channel in late October.
A Belgian Malinois from Los Angeles, CA. K-9 Edo managed to disengage a suspect who was trying to harm two small children and not only saved their lives, but the lives of the officers on duty.
A mixed breed, from Great Lakes, IL. Gander was rescued from a high-kill shelter and is the first mixed breed to be given the Award for Canine Excellence. Now he travels the country raising awareness and money to veterans groups and service animals.
A yellow Labrador from Easton, PA. Judge has helped find countless pieces of evidence to prosecute criminals that have set fires. He also educates the community on fire safety & provides a deterrence to criminals who are considering arson.
A Belgian Malinois, from Galena, KS. While confronting an enemy combatant, Layka took 4 shots from an AK-47 to her shoulder. She still managed to finish the job in question and was eventually air lifted to safety.


The next Professional Training Days are on Friday 18 July and Friday 17 October.
PLEASE put the phrase "Clay Plaster Training Enquiry" in the subject of your email.
Please see out Clay plaster training page for further information.


text:
The  occurred on June 15 at 23:26 local time (14:26 UTC). The epicenter of the earthquake was located near Kikai Island, Japan. It had a magnitude of  8.1.

Overview
The earthquake occurred near the northern end of the deepest region in Ryukyu Trench. The hypocenter was located near 28.00°E, 130.00°N, about 30 km south of the Kikai Island, with a depth of about 100 km. However, due to the instrumental precision of that time, the location of the hypocenter was just an approximation, and estimations differ. A recent study estimated that the hypocenter was located near 28.90°E, 130.25°N, about 60 km NNE of the Kikai Island, with a depth of about 30 km. In 2013, another study reevaluated the location and depth of the earthquake and found that its hypocenter depth was 10 km. The reevaluation also relocated the epicenter location to 28.7°E, 130.6°N.

Twelve people were reported dead, including one on Kikai Island. Four hundred and twenty two houses were completely destroyed, 401 of which on Kikai Island. Damage was also reported on Amami Ōshima, Toku-no-shima, and Okinawa Island. The wall of Shuri Castle in Shuri was damaged. This earthquake could be felt as far as in Shanghai, China, Tainan, Taiwan (then under Japanese rule), and Fukushima, Japan.

Tsunami
The earthquake triggered a tsunami which was recorded on Kikai Island and Amami Ōshima. The tsunami was relatively small on the east coast of Kikai Island, but had a height of at least 5m on the west coast of Kikai Island and also in Amami Ōshima, and may have had a maximum height of over 10m in certain parts of Kikai Island.

See also
List of earthquakes in 1911
List of earthquakes in Japan

References

External links

1911 in Japan
Kikai Island earthquake, 1911
1911 tsunamis
June 1911 events
Megathrust earthquakes in Japan
Tsunamis in Japan
Earthquakes of the Meiji period
1911 disasters in Japan


text:
///////////////////////////////////////////////////////////////////////////////////////////////
// Doc-O-Matic(R) 5 script file.
// Copyright (C) 2000-2006 by toolsfactory software inc.
// http://www.toolsfactory.com
// http://www.doc-o-matic.com
//
// Distribution permitted as part of browser-based
// Help systems generated by Doc-O-Matic(R).
///////////////////////////////////////////////////////////////////////////////////////////////

///////////////////////////////////////////////////////////////////////////////////////////////
// Available variables which are resolved when Doc-O-Matic use the file:
//
//    HEADER_FILE, TOCIDX_FILE, DEFAULT_TITLE_FILE, DEFAULT_TOPIC_FILE
//
//    SCRIPT_FILE, SCRIPT_FUNCTION_ONLOAD
//    STYLESHEET_FILE
//
//    WINDOW_NAME_HEADER, WINDOW_NAME_TOPIC, WINDOW_NAME_NAVIGATION
//    WINDOW_NAME_ADDINFO, WINDOW_NAME_HIERARCHY, WINDOW_NAME_SEEALSO,
//    WINDOW_NAME_LEGEND, WINDOW_NAME_BODYSOURCE, WINDOW_NAME_TOCIDX
//
//    TOC_IMAGE_PLUS, TOC_IMAGE_MINUS, SECTION_IMAGE_PLUS, SECTION_IMAGE_MINUS,
//    COLLAPSE_COOKIE_NAME, COLLAPSE_PERSISTENTSTORE_NAME,
//    COLLAPSE_STATESAVE_USECOOKIES, COLLAPSE_STATESAVE_USEPERSISTENCE
//
//    TOC_GROUP_CLASSNAME, TOC_TOPIC_CLASSNAME
//    TOC_HIGHLIGHT_GROUP_CLASSNAME, TOC_HIGHLIGHT_TOPIC_CLASSNAME
///////////////////////////////////////////////////////////////////////////////////////////////

///////////////////////////////////////////////////////////////////////////////////////////////
// retrieves a variable from the search string
function getStringVar(varname) {
    var searchstr = document.location.search;
    var varidx = searchstr.indexOf(varname);

    if(varidx >= 0) {
        var startpos = varidx + varname.length +1;
        searchstr = searchstr.substring(startpos, searchstr.length);

        var nextpos = searchstr.length;
        if (searchstr.indexOf('&') >= 0) {
            nextpos = searchstr.indexOf('&');
        }

        searchstr = searchstr.substring(0, nextpos);
    } else {
        searchstr = '';
    }

    return unescape(searchstr);
};

///////////////////////////////////////////////////////////////////////////////////////////////
// searches the entire frameset and returns
// the frame with name frmname
function findFrame(w, frmname) {
    var res = null;

    if (frmname != '') {
        res = w.frames[frmname];

        // if it's not in the current window
        // search the sub-frames
        if (res == null) {
            var L = w.frames.length;
            var i;

            for (i = 0; i < L; i++) {
                res = findFrame(w.frames[i], frmname);
                if (res != null) {
                    break;
                }
            }
        }
    } else {
        result = this;
    }

    return res;
};

///////////////////////////////////////////////////////////////////////////////////////////////
// loads frame frmname with frmfile
function fillFrame(frmname, frmfile) {
    var theframe = findFrame(top, frmname);

    if (theframe != null) {
        theframe.location.replace(frmfile);
    }
    return true;
};

///////////////////////////////////////////////////////////////////////////////////////////////
// Called when the frameset file is loaded.
// Loads the framefile passed on the
// search string into the frame also passed
// on the search string
function loadTopicFrame() {
    var frmname = getStringVar('frmname');
    var frmfile = getStringVar('frmfile');

    if ((frmname != '') && (frmfile != '')) {
        fillFrame(frmname, frmfile);
    }

    return true;
};

var called = false;

///////////////////////////////////////////////////////////////////////////////////////////////
// ensures the current file is displayed within
// a frameset, if not loads the frame set which
// loads the file itself into the frameset.
function loadFrameSetOrTitle(framesetfile, targetframe, topicfile)
{
    if (!called) {
        called = true;
        if (self == top) {
            top.location.replace(framesetfile + '?frmname=' + escape(targetframe) + '&frmfile=' + escape(topicfile));
        }
    }

    return true;
};

///////////////////////////////////////////////////////////////////////////////////////////////
// shows or hides a DIV based on whether
// it's visible or not. Also toggles the corresponding
// expand/collaps graphic.
function internalToggleVisibilityEx2(theDocument, imgID, divID, storeVisibilityState, storeID, forceHide, forceShow, imgplussrc, imgminussrc)
{
    var div = theDocument.getElementById(divID);
    var img = theDocument.getElementById(imgID);

    if (div != null) {
        // Unfold the branch if it isn't visible
        if (((!forceHide) || forceShow) && (div.style.display == 'none')) {
            if (img != null) {
                img.src = imgminussrc;
            }
            div.style.display = '';

            // store the state so we can recreate it
            if (storeVisibilityState) {
                saveVisibilityState(storeID, true);
            }
        // Collapse the branch if it IS visible
        } else if (!forceShow) {
            if (img != null) {
                img.src = imgplussrc;
            }
            div.style.display = 'none';

            // store the state so we can recreate it
            if (storeVisibilityState) {
                saveVisibilityState(storeID, false);
            }
        }
    }
}

function internalToggleVisibilityEx(imgID, divID, storeVisibilityState, storeID, forceHide, forceShow, imgplussrc, imgminussrc)
{
    internalToggleVisibilityEx2(document, imgID, divID, storeVisibilityState, storeID, forceHide, forceShow, imgplussrc, imgminussrc);
}

// toggles the visibility of divID and
// changes the img accordingly.
function toggleVisibilityTOC(imgID, divID)
{
    internalToggleVisibilityEx(imgID, divID, false, "", false, false, "btn_toc_expand.gif", "btn_toc_collapse.gif");
}

function toggleVisibilitySection(imgID, divID)
{
    internalToggleVisibilityEx(imgID, divID, false, "", false, false, "btn_expand_2.gif", "btn_collapse_2.gif");
}

// toggles the visibility of an item identified
// by storeID. To get the corresponding img
// and div ids, storeID is prefixed by
// "img" and "div".
function toggleVisibilityStored(storeID)
{
    var imgID = "img" + storeID;
    var divID = "div" + storeID;
    internalToggleVisibilityEx(imgID, divID, true, storeID, false, false, "btn_expand_2.gif", "btn_collapse_2.gif");
}

function isCorrespondingTOCItem(href, topicfile)
{
    var result = false;
    var pathidx = href.lastIndexOf("/");
    var filename = "";

    if (pathidx >= 0) {
        filename = href.substring(pathidx+1, href.length);

        if (filename == topicfile) {
            result = true;
        }
    }

    return result;
}

function expandTOC(framedoc, element)
{
    var baseid = "";
    var outerdiv = null;
    var pelement = element.parentNode;

    while (pelement != null) {
        if ((pelement.tagName == "DIV") && (pelement.id.substring(0, 3) == "div")) {
            baseid = pelement.id.substring(3, pelement.id.length);
            outerdiv = pelement;
            break;
        }

        pelement = pelement.parentNode;
    }

    if ((baseid != "") && (outerdiv != null)) {
        // expand the div if necessary
        internalToggleVisibilityEx2(framedoc, "img" + baseid, "div" + baseid, false, "", false, true, "btn_toc_expand.gif", "btn_toc_collapse.gif");

        // expand outer divs
        expandTOC(framedoc, outerdiv);
    }

    return true;
}

// ensures element is scrolled into view
// so it's visible on the page.
function ensureTOCEntryVisible(framedoc, element)
{
    var pos = 0;
    var scrollelement;
    var id = "areascroll";

    // first see if we have a scroll area div
    scrollelement = framedoc.getElementById(id);

    if (scrollelement == null) {
        scrollelement = framedoc.body;
    }

    if (scrollelement != null) {
        var delta = 0;

        var viewtop = scrollelement.scrollTop + scrollelement.offsetTop;
        var viewbottom = viewtop + scrollelement.offsetHeight;
        var scrollbarheight = 30;
        // the bottom-scrollbar's area is included in offsetHeight, so we have
        // to subtract a appropriate amount to account for that
        if (viewbottom > (scrollbarheight * 2)) {
            viewbottom = viewbottom - scrollbarheight;
        }

        var elementtop = element.offsetTop;
        if (navigator.family == 'ie4') {
            elementtop = elementtop + scrollelement.offsetTop;
        }
        var elementbottom = elementtop + element.offsetHeight;

        if (elementtop < viewtop) {
            delta = (elementtop - viewtop);
        } else if (elementbottom > viewbottom) {
            delta = (elementbottom-viewbottom);
        }

        if (delta != 0) {
            scrollelement.scrollTop = scrollelement.scrollTop + delta;
        }
    }
}

var currentTOCHighlightEntry = null;
var currentTOCHighlightEntryClass = "";

// hightlights the TOC entry that has been scrolled
// into view.
function highlightTOCEntry(framedoc, element)
{
    if (framedoc.currentTOCHighlightEntry != null) {
        framedoc.currentTOCHighlightEntry.className = framedoc.currentTOCHighlightEntryClass;

        framedoc.currentTOCHighlightEntry = null;
        framedoc.currentTOCHighlightEntryClass = "";
    }

    if (element != null) {
        var newclassname = "";

        if (element.className == "Element860") {
            newclassname = "Element874";
        } else if (element.className == "Element862") {
            newclassname = "Element875";
        }

        if (newclassname != "") {
            framedoc.currentTOCHighlightEntry = element;
            framedoc.currentTOCHighlightEntryClass = element.className;

            element.className = newclassname;
        }
    }
}

// searches for a link to topicfile in the TOC and
// highlights the corresponding node in the tree.
function doSynchTOC(topicfile)
{
    var frm = findFrame(top, "tocidx");
    var links = null;
    var idx;
    var toctreeid = "toctree";
    var treeroot;

    if (frm != null) {
        treeroot = frm.document.getElementById(toctreeid);

        if (treeroot != null) {
            links = treeroot.getElementsByTagName("a");

            for (idx=0; idx < links.length; idx++) {
                if (isCorrespondingTOCItem(links[idx].href, topicfile)) {
                    expandTOC(frm.document, links[idx]);
                    ensureTOCEntryVisible(frm.document, links[idx]);
                    highlightTOCEntry(frm.document, links[idx]);
                    break;
                }
            }
        }
    }

    return true;
}

// Initiates the TOC synchronization. If the
// TOC or index file is being loaded this
// functions finds the name of the topic file
// currently displayed and synchronizes the
// TOC with that topic.
function synchTOC(topicfile)
{
    var frm = findFrame(top, "tocidx");
    if (frm != null) {
        // if we're loading the TOC or index file
        // then frm.document == document
        if (document.location == frm.document.location) {
            var topicfrm = findFrame(top, "topic");
            if (topicfrm != null) {
                var href = topicfrm.document.location.href;
                var pathidx = href.lastIndexOf("/");

                if (pathidx >= 0) {
                    topicfile = href.substring(pathidx+1, href.length);
                }
            }
        }
    }

    // now do the synchronization
    doSynchTOC(topicfile);
}

///////////////////////////////////////////////////////////////////////////////////////////////
// Copies the content of the element identified by ID
// to the clipboard. Works with Internet Explorer only.
function CopyElementToClipboard(ID)
{
    var element = document.getElementById(ID);

    if (element != null) {
        window.clipboardData.setData("Text", element.innerText);
	}
}

///////////////////////////////////////////////////////////////////////////////////////////////
// Popup and Fixed Header
//

///////////////////////////////////////////////////////////////////////////////////////////////
// support functions

// Returns a rectangle object initialized
// with the given parameters.
function Rectangle(left, top, width, height)
{
	this.left = left;
	this.top = top;
	this.width = width;
	this.height = height;
}

// Hides or shows a popup element
function setElementVisible(element, v) {
    if (v) {
        element.style.visibility = "visible";
    } else {
        element.style.visibility = "hidden";
    }
}

// This function fills a rectange structure (r) with
// the window coordinates of the page client area
function getWindowClientArea(r)
{
    if (navigator.family == 'ie4') {
	   r.left = document.body.scrollLeft;
	} else {
	   r.left = window.pageXOffset;
	}

    if (navigator.family == 'ie4') {
	   r.top = document.body.scrollTop;
	} else {
	   r.top = window.pageYOffset;
	}

	r.width = window.document.body.clientWidth;
	if (!r.width) {
	    r.width = window.innerWidth;
	}
	if (!r.width) {
	    r.width = window.outerWidth;
	}

	r.height = window.document.body.clientHeight;
	if (!r.height) {
	   r.height = window.innerHeight;
	}
	if (!r.height) {
	   r.height = window.outerHeight;
	}
}

// Returns the absolute X coordinate of an element
// Source: DHTML Lab
function getRealLeft(theElement) {
    xPos = theElement.offsetLeft;
    tempEl = theElement.offsetParent;
    while (tempEl != null) {
        xPos += tempEl.offsetLeft;
        tempEl = tempEl.offsetParent;
    }
    return xPos;
}

// Returns the absolute Y coordinate of an element
// Source: DHTML Lab
function getRealTop(theElement) {
    yPos = theElement.offsetTop;
    tempEl = theElement.offsetParent;
    while (tempEl != null) {
        yPos += tempEl.offsetTop;
        tempEl = tempEl.offsetParent;
    }
    return yPos;
}

// This gets the extent of the given object
function getElementBounds(element, rect)
{
	if (typeof element.offsetLeft != 'undefined') {
		rect.left = getRealLeft(element);
		rect.top = getRealTop(element);
		rect.width = element.offsetWidth;
		rect.height = element.offsetHeight;
	} else {
		rect.left = 0;
		rect.top = 0;
		rect.width = 0;
		rect.height = 0;
	}
}

// Sets the x/y coordinates and the popup width but
// not the height, which auto-adjusts to the content.
function setElementBounds(element, rect)
{
	element.style.left = rect.left + "px";
	element.style.top = rect.top + "px";
	element.style.width = rect.width + "px";
	element.style.height = ""; //rect.height + "px";
}

// Browser dependent GetElementById version
function findElement(id)
{
    var ie = document.all;

    if (ie) {
	    return document.all(id);
    } else {
	    return document.getElementById(id);
    }
}

///////////////////////////////////////////////////////////////////////////////////////////////
// Popup Functions
//

var hidetimer = null;       // Helper timer. During the lifetime
                            // of this timer OnMouseDown events
                            // from the body will be ignored
var closetimer = null;      // Timer used to close a popup upon
                            // mouse click. Since the mouse click
                            // could be on a link, the browser would
                            // not load the target if we remove the
                            // popup immediately.
var thePopup = null;        // Holds the popup element, if one is active

// Fired when the hidetimer expires, simply
// deactivates and initializes the timer
// which signals that Body.OnMouseDown events
// will be processed.
function activateOnHide()
{
	clearTimeout(hidetimer);
	hidetimer = null;
}

// Shows a popup div
// Parameters:
//  trigger -           Element triggering the popup action. The
//                      popup will be aligned on the lower left
//                      edge of the TriggerElement.
//  divid -             The id of the DIV element that contains
//                      the popup content.
function showPopup(trigger, divid)
{
    // if there is a popup visible at the
    // moment, we need to close it.
    if (thePopup != null) {
        doClosePopup();
    }

    thePopup = findElement(divid);

    if (thePopup == null)
        return;

	var clientarea = new Rectangle;
	var popuprect = new Rectangle;
	var triggerrect = new Rectangle;

	getWindowClientArea(clientarea);
	getElementBounds(thePopup, popuprect);
	getElementBounds(trigger, triggerrect);

    // set the initial size, the height
    // will adjust automatically
	popuprect.left = 0;
	popuprect.top = triggerrect.top + triggerrect.height;
	popuprect.width = clientarea.width / 2;

	setElementBounds(thePopup, popuprect);

    // check if the popup is taller than
    // the client area and reset it in that
    // case
	getElementBounds(thePopup, popuprect);

    var maxheight = clientarea.height - popuprect.top - 20;

	if ((maxheight > 0) && (popuprect.height > maxheight)) {
        thePopup.style.overflow = "auto";
        thePopup.style.height = maxheight;
	}

    // show it
	setElementVisible(thePopup, true);

    // prevent the popup from closing
    // through a OnMouseDown on the body
    // for a short period of time
    hidetimer = setTimeout("activateOnHide();", 200);
}

// Closes the current popup (if any) and
// kills the close timer.
function doClosePopup()
{
	clearTimeout(closetimer);
	closetimer = null;

	if (thePopup != null) {
		setElementVisible(thePopup, false);
		thePopup = null;
	}
}

// Initiates closing the popup if
//  * Hiding is not blocked by the hidetimer, or
//  * the popup is already being closed
function closePopup()
{
    if ((hidetimer != null) || (closetimer != null)) {
        return;
    }

    // to give clicked links a chance for
    // begin activated, the actual closing
    // is delayed a little.
    closetimer = setTimeout("doClosePopup();", 400);
}

///////////////////////////////////////////////////////////////////////////////////////////////
// Fixed header area functions

var scrollbaroffsetright = 0;
var scrollbaroffsetbottom = 4;

// Sets up the non-scrolling region and scroll area
// must be called whenever the window size changes
function doSetupFixedHeader()
{
	if (document.body.clientWidth == 0)
        return;

	var divFixed = findElement("areafixed");
	var divScroll = findElement("areascroll");

	if (divScroll == null)
        return;

	if (divFixed != null) {

        if (navigator.family == 'ie4') {
		    document.body.scroll = "no"
 		    divFixed.style.width = document.body.offsetWidth - 1;
		    divScroll.style.paddingRight = "20px";
        }

		divScroll.style.overflow= "auto";

	    var clientarea = new Rectangle;
	    getWindowClientArea(clientarea);

		divScroll.style.width = clientarea.width - scrollbaroffsetright;
		divScroll.style.top=0;

		if (clientarea.height > divFixed.offsetHeight + scrollbaroffsetbottom) {
            var h = clientarea.height - (divFixed.offsetHeight + scrollbaroffsetbottom);
    		divScroll.style.height = h;
        }
		else {
		    divScroll.style.height = 0
		}
	}
}

// makes the page scoll normally so
// the print out will look ok.
function doBeforePrinting() {
	var i;

	if (window.text) {
        document.all.text.style.height = "auto";
    }

	for (i=0; i < document.all.length; i++){
		if (document.all[i].tagName == "BODY") {
			document.all[i].scroll = "yes";
		}
		if (document.all[i].id == "areafixed") {
			document.all[i].style.margin = "0px 0px 0px 0px";
			document.all[i].style.width = "100%";
		}
		if (document.all[i].id == "areascroll") {
			document.all[i].style.overflow = "visible";
			document.all[i].style.top = "5px";
			document.all[i].style.width = "100%";
			document.all[i].style.padding = "0px 10px 0px 30px";
		}
	}

    return;
}

// reloads the page to reset after changes
// in doBeforePrinting().
function reloadPage() {
    document.location.reload();
    return;
}

///////////////////////////////////////////////////////////////////////////////////////////////
// Expand/Collapse storage functions

var collapseStateCookieName = "DOM_Collapsed_Sections"
var collapsePersistenceName = "domdocSettings"

// If we create browser based HTML files, this variable will be true
var useCookies = true;

// If we create HTML Help or Help 2, this variable will be true
var usePersistence = false;

///////////////////////////////////////////////////////////////////////////////////////////////
// Cookie helper functions
// from http://www.quirksmode.org/js/cookies.html

function createCookie(name,value,days)
{
    var expires = "";

    if (days) {
        var date = new Date();
        date.setTime(date.getTime()+(days*24*60*60*1000));
        expires = "; expires="+date.toGMTString();
    }

    document.cookie = name+"="+value+expires+"; path=/";
}

function readCookie(name)
{
	var nameEQ = name + "=";
	var ca = document.cookie.split(';');
	for(var i=0;i < ca.length;i++) {
		var c = ca[i];
		while (c.charAt(0)==' ') c = c.substring(1,c.length);
		if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
	}
	return null;
}

function eraseCookie(name)
{
	createCookie(name,"",-1);
}

///////////////////////////////////////////////////////////////////////////////////////////////
// Persistence functions for use in HTML Help and Help 2

// This variable temporarily holds the collapsed section
// ids until the get stored using persistence.
var persistentCollapsedIDs = "";

// Saves the persistent data from our temporary
// variable which holds the value to the persistent
// storage.
function savePersistentData()
{
    var id = "persistenceDiv";
    var pdiv = document.getElementById(id);
    if (pdiv != null) {
        try {
            pdiv.setAttribute("collapsedIDs", persistentCollapsedIDs);
            pdiv.save(collapsePersistenceName);
        } catch (e) {
            // HTML Help may trigger an exception
        }
    }
    return;
}

// Loads the persistent data from the persistent
// storage into our temporary variable which holds
// the value for further use.
function loadPersistentData()
{
    persistentCollapsedIDs = "";

    var id = "persistenceDiv";
    var pdiv = document.getElementById(id);
    if (pdiv != null) {
        try {
            pdiv.load(collapsePersistenceName);
            var data = pdiv.getAttribute("collapsedIDs");
            if (data != null) {
                persistentCollapsedIDs = data;
            }
        }
        catch (e) {
            // HTML Help may trigger an exception
        }
    }
    return;
}

// Removes the persistent data from the storage.
function removePersistenceData()
{
    var id = "persistenceDiv";
    var pdiv = document.getElementById(id);
    if (pdiv != null) {
        try {
            pdiv.removeAttribute("collapsedIDs");
    	    pdiv.save(collapsePersistenceName);
        }
        catch (e) {
            // HTML Help may trigger an exception
        }
	}
	return;
}

// Saves the persistent data to our temporary variable that
// acts as storage while the page is being displayed.
function savePersistentKey(key, value)
{
    persistentCollapsedIDs = value;
    return;
}

// Returns the content in our temporary variable that
// acts as storage while the page is being displayed.
function loadPersistentKey(key)
{
    return persistentCollapsedIDs;
}

// Clears our temporary variable and erases
// the value from the persistent storage.
function removePersitentKey(key)
{
    persistentCollapsedIDs = "";
    removePersistenceData();
    return;
}

///////////////////////////////////////////////////////////////////////////////////////////////
// Collapsed section storage functions

// Saves the ID list in ids either using
// cookies or persistent storage,
// depending on what we use right now.
function saveExpandState(ids)
{
    if (useCookies) {
        createCookie(collapseStateCookieName, ids, 14);  // we store the cookie for 14 days
    } else if (usePersistence) {
        savePersistentKey(collapsePersistenceName, ids);
    }

    return;
}

// Loads the collapsed ID list either from
// cookies or persistent storage,
// depending on what we use right now.
function loadExpandState()
{
    var data = "";
    if (useCookies) {
        data = readCookie(collapseStateCookieName);
    } else if (usePersistence) {
        data = loadPersistentKey(collapsePersistenceName);
    }

    return data;
}

// Removes the collapsed ID list either from
// cookies or persistent storage,
// depending on what we use right now.
function eraseExpandState()
{
    if (useCookies) {
        eraseCookie(collapseStateCookieName);
    } else if (usePersistence) {
        removePersitentKey(collapsePersistenceName);
    }

    return;
}

//////////////////////////////////////////////////////////////////////////////////////////////

// Adds an ID to a list of IDs
function doAddId(res, addId)
{
    var result = res;

    if (result != "") {
        result = result + ",";
    }

    result = result + addId;

    return result;
}

// Converts the stored id into a div and
// img Id an calls the showing function
function doShowHideCollapsedId(id, visible)
{
    var imgid = "img" + id;
    var divid = "div" + id;

    internalToggleVisibilityEx(imgid, divid, false, "", !visible, visible, "btn_expand_2.gif", "btn_collapse_2.gif");
}

// Goes through the list of Ids passed in ids and
// either adds a new ID, remove an ID, collapses
// or expands the elements in the list.
// Returns:
//   The new list of IDs.
// Parameters:
//   ids -        a string with the list of IDs, separated
//                by commas, ("ID1,ID2,ID3").
//   addId -      an ID to be added to the list.
//   removeId -   an ID to be removed from the list.
//   collapsIds - a boolean that indicates if the elements
//                in the list shall be collapsed.
//   expandIds -  a boolean that indicates if the elements
//                in the list shall be expanded.
function processCollapsedIds(ids, addId, removeId, collapsIds, expandIds)
{
    var result = "";
    var idlist = ids;

    while (idlist.length > 0) {
        var id = "";
        var idx = idlist.indexOf(',');

        if (idx >= 0) {
            id = idlist.substring(0, idx);
            idlist = idlist.substring(idx+1);
        } else {
            id = idlist;
            idlist = "";
        }

        if (collapsIds) {
            doShowHideCollapsedId(id, false);
        }

        if (expandIds) {
            doShowHideCollapsedId(id, true);
        }

        // check if add Id is
        // already in the list
        // so we don't add it twice
        if (addId.length > 0) {
            if (id == addId) {
                addId = "";
            }
        }

        // if the Id doesn't match
        // removeId, we preserve it.
        if (removeId.length > 0) {
            if (id == removeId) {
                id = "";
            }
        }

        if (id.length > 0) {
            result = doAddId(result, id);
        }
    }

    // if addId was not removed
    // we add it.
    if (addId != "") {
        result = doAddId(result, addId);
    }

    return result;
}

// Reads the current collapse list and adds or
// removes an ID to/from it.
function modifyCollapseState(addid, removeid)
{
    var ids = loadExpandState();

    if (ids == null) {
        ids = "";
    }

    ids = processCollapsedIds(ids, addid, removeid, false, false);

    if (ids != "") {
        saveExpandState(ids);
    } else {
        eraseExpandState();
    }
}

// Depending on visibility, removes or adds
// an ID to the collaps list.
function saveVisibilityState(id, visible)
{
    if (visible) {
        modifyCollapseState("", id);
    } else {
        modifyCollapseState(id, "");
    }
}

// Restores the collaps states of all
// stored elements.
function loadCollapseStates()
{
    var ids = loadExpandState();

    if (ids != null) {
        processCollapsedIds(ids, "", "", true, false);
    }
}

// this is the initial state the sections
// are displayed in.
var currentSectionStateExpanded = true;

// toggles the expand state of all sections
// identified by "ids" and updates the link
// text and link image.
function ToggleAllElements(ids, linkTextID, imgID, collapseAllText, expandAllText)
{
    var link = document.getElementById(linkTextID);
    var img = document.getElementById(imgID);

    if (ids != null) {
        processCollapsedIds(ids, "", "", currentSectionStateExpanded, !currentSectionStateExpanded);
        currentSectionStateExpanded = !currentSectionStateExpanded;
    }

    if (link != null) {
        if (currentSectionStateExpanded) {
            link.innerHTML = collapseAllText;
        } else {
            link.innerHTML = expandAllText;
        }
    }

    if (img != null) {
        if (currentSectionStateExpanded) {
            img.src = "btn_collapse_2.gif";
        } else {
            img.src = "btn_expand_2.gif";
        }
    }
}

///////////////////////////////////////////////////////////////////////////////////////////////
// Dynamic Index Display

// trims search text and converts to uppercase
function IndexPrepareSearchText(text)
{
  text = text.replace( /^\s+/g, "" );// strip leading
  text = text.replace( /\s+$/g, "" );// strip trailing
  text = text.toUpperCase();
  return text;
}

function IndexMatchesEntry(entry, text)
{
    if ((entry[0].indexOf(text) >= 0) || (entry[1].indexOf(text) >= 0)) {
        return true;
    } else {
        return false;
    }
}

function GetQuote()
{
    return unescape("%22");
}

function IndexPrintEntry(text, url, divclass)
{
    var result = "";
    var target = "topic";

    result = "<div class=" + GetQuote() + divclass + GetQuote() + ">";

    if (url.length > 0) {
        if (target.length > 0) {
            result = result + "<a href=" + GetQuote() + url + GetQuote() + " target=" + GetQuote() + target + GetQuote() + ">";
        } else {
            result = result + "<a href=" + GetQuote() + url + GetQuote() + ">";
        }
    }

    result = result + text;

    if (url.length > 0) {
        result = result + "</a>";
    }

    result = result + "</div>";

    return result;
}

function IndexGetEntry(lastentry, entry, classmain, classsub)
{
    var result = "";

    var printmainentry = true;
    var printsubentry = false;
    var urlmainentry = "";
    var urlsubentry = "";

    if (entry[1].length > 0) {
        printsubentry = true;

        if (lastentry != null) {
            if (lastentry[0] == entry[0]) {
                printmainentry = false;
            }
        }
    }

    if ((printmainentry) && (!printsubentry)) {
        urlmainentry = entry[2];
    }

    if (printsubentry) {
        urlsubentry = entry[2];
    }

    if (printmainentry) {
        result = result + IndexPrintEntry(entry[3], urlmainentry, classmain);
    }
    if (printsubentry) {
        result = result + IndexPrintEntry(entry[4], urlsubentry, classsub);
    }

    return result;
}

var searchTimer = null;
var currentSearchText = "";
var searchDynamicDivID = "";
var searchResultDivID = "";
var searchClassMainEntry = "";
var searchClassSubEntry = "";

function IndexClearSearchTimer()
{
    if (searchTimer != null) {
	   clearTimeout(searchTimer);
	   searchTimer = null;
    }

    return true;
}

function IndexUnescape()
{
    var entry, k, i;
    for(k = 0; k < theIndex.length; k++) {
        entry = theIndex[k];

        for(i = 0; i < 5; i++) {
            entry[i] = unescape(entry[i]);
        }
    }
}

function DoIndexSearch()
{
    var dynamicdiv, resultdiv;
    var entry, lastentry, cnt, k, searchtext;
    var outputHTML = "";

    IndexClearSearchTimer();

    dynamicdiv = document.getElementById(searchDynamicDivID);
    resultdiv = document.getElementById(searchResultDivID);

    if ((dynamicdiv != null) && (resultdiv != null)) {
        cnt = 0;
        searchtext = IndexPrepareSearchText(currentSearchText);

        if (searchtext.length > 0) {
            IndexFill();
            IndexUnescape();

            lastentry = null;

            for(k = 0; k < theIndex.length; k++) {
                entry = theIndex[k];

                if (IndexMatchesEntry(entry, searchtext)) {
                    outputHTML = outputHTML + IndexGetEntry(lastentry, entry, searchClassMainEntry, searchClassSubEntry);

                    lastentry = entry;
                    cnt++;
                }
            }
        }

        if (cnt > 0) {
            resultdiv.innerHTML = outputHTML;
            dynamicdiv.style.display = '';
        } else {
            dynamicdiv.style.display = 'none';
        }
    }

    return true;
}

// instant index search invoked by pressing the search button
function IndexSearch(text, dynamicdivid, resultdivid, classmain, classsub)
{
    currentSearchText = text;
    searchDynamicDivID = dynamicdivid;
    searchResultDivID = resultdivid;
    searchClassMainEntry = classmain;
    searchClassSubEntry = classsub;

    DoIndexSearch();
}

// delayed index search invoked when entering text in the search field.
function IndexDelaySearch(text, dynamicdivid, resultdivid, classmain, classsub)
{
    if (text != currentSearchText) {
        IndexClearSearchTimer();

        currentSearchText = text;
        searchDynamicDivID = dynamicdivid;
        searchResultDivID = resultdivid;
        searchClassMainEntry = classmain;
        searchClassSubEntry = classsub;

        searchTimer = setTimeout("DoIndexSearch();", 500);
    }

    return true;
}

///////////////////////////////////////////////////////////////////////////////////////////////
// event handlers

// Process key input
function ieKey()
{
	if (window.event.keyCode == 27) {
        closePopup();
		doSetupFixedHeader();
		onResizeWindow();
	}
}

// Called when the brower window resizes
function onResizeWindow()
{
	doSetupFixedHeader();  //resize the scroll area
    return;
}

function fixMoniker()
{
    var curURL = document.location + ".";
    var pos = curURL.indexOf("mk:@MSITStore");
    if( pos == 0 ) {
        alert("old URL: " + curURL);
        curURL = "ms-its:" + curURL.substring(14,curURL.length-1);
        alert("replacing URL with: " + curURL);
        document.location.replace(curURL);
        return false;
    } else {
        return true;
    }
}

//fixMoniker();

// Initialize the Header
function onBodyLoad()
{
    doSetupFixedHeader();
    document.onkeypress = ieKey;
    window.onresize = onResizeWindow;

    if (navigator.family == 'ie4') {
        window.onbeforeprint = doBeforePrinting;
        window.onafterprint = reloadPage;
    }

    // if we use persistence we
    // load the settings now
    if (usePersistence) {
        loadPersistentData();
        window.onunload = onUnloadWindow;
    }

    // restore collapsed sections
    loadCollapseStates();
}

// used to save settings to the persistent
// storage if we use it.
function onUnloadWindow()
{
    if (usePersistence) {
        savePersistentData();
    }
    return;
}

// called if we're using framesets in
function onBodyLoadEx(framesetfile, targetframe, topicfile)
{
    loadFrameSetOrTitle(framesetfile, targetframe, topicfile);
    onBodyLoad();
    synchTOC(topicfile);
    return true;
}

// Process mouse down events, close open popups
// and realign the fixed header area.
function onBodyMouseDown()
{
    closePopup();
    doSetupFixedHeader();
}

// Opens the big version of an image in a secondary window
function openBigImage(image)
{
    window.open(image, "_blank", "toolbar=no,status=no,menubar=no,resizable=yes");
    return true;
}

function openExternalLink(href)
{
    window.open(href, "_blank", "");
    return true;
}

function switchImage(img, src)
{
    img.src = src;
    return true;
}

// opens a mail window and fills the
// address, subject and body
function sendFeedback(mailto, subject, body)
{
    var href = "mailto:" + mailto + "?subject=" + subject + "&body=" + body;
    window.open(href, "_top");
}

///////////////////////////////////////////////////////////////////////////////////////////////
// Browser detection
// Source: http://devedge.netscape.com/toolbox/examples/2002/xb/ua/

function xbDetectBrowser()
{
  var oldOnError = window.onerror;
  var element = null;

  window.onerror = null;

  // work around bug in xpcdom Mozilla 0.9.1
  window.saveNavigator = window.navigator;

  navigator.OS    = '';
  navigator.version  = parseFloat(navigator.appVersion);
  navigator.org    = '';
  navigator.family  = '';

  var platform;
  if (typeof(window.navigator.platform) != 'undefined')
  {
    platform = window.navigator.platform.toLowerCase();
    if (platform.indexOf('win') != -1)
      navigator.OS = 'win';
    else if (platform.indexOf('mac') != -1)
      navigator.OS = 'mac';
    else if (platform.indexOf('unix') != -1 || platform.indexOf('linux') != -1 || platform.indexOf('sun') != -1)
      navigator.OS = 'nix';
  }

  var i = 0;
  var ua = window.navigator.userAgent.toLowerCase();

  if (ua.indexOf('opera') != -1)
  {
    i = ua.indexOf('opera');
    navigator.family  = 'opera';
    navigator.org    = 'opera';
    navigator.version  = parseFloat('0' + ua.substr(i+6), 10);
  }
  else if ((i = ua.indexOf('msie')) != -1)
  {
    navigator.org    = 'microsoft';
    navigator.version  = parseFloat('0' + ua.substr(i+5), 10);

    if (navigator.version < 4)
      navigator.family = 'ie3';
    else
      navigator.family = 'ie4'
  }
  else if (ua.indexOf('gecko') != -1)
  {
    navigator.family = 'gecko';
    var rvStart = ua.indexOf('rv:');
    var rvEnd   = ua.indexOf(')', rvStart);
    var rv      = ua.substring(rvStart+3, rvEnd);
    var rvParts = rv.split('.');
    var rvValue = 0;
    var exp     = 1;

    for (var i = 0; i < rvParts.length; i++)
    {
      var val = parseInt(rvParts[i]);
      rvValue += val / exp;
      exp *= 100;
    }
    navigator.version = rvValue;

    if (ua.indexOf('netscape') != -1)
      navigator.org = 'netscape';
    else if (ua.indexOf('compuserve') != -1)
      navigator.org = 'compuserve';
    else
      navigator.org = 'mozilla';
  }
  else if ((ua.indexOf('mozilla') !=-1) && (ua.indexOf('spoofer')==-1) && (ua.indexOf('compatible') == -1) && (ua.indexOf('opera')==-1)&& (ua.indexOf('webtv')==-1) && (ua.indexOf('hotjava')==-1))
  {
    var is_major = parseFloat(navigator.appVersion);

    if (is_major < 4)
      navigator.version = is_major;
    else
    {
      i = ua.lastIndexOf('/')
      navigator.version = parseFloat('0' + ua.substr(i+1), 10);
    }
    navigator.org = 'netscape';
    navigator.family = 'nn' + parseInt(navigator.appVersion);
  }
  else if ((i = ua.indexOf('aol')) != -1 )
  {
    // aol
    navigator.family  = 'aol';
    navigator.org    = 'aol';
    navigator.version  = parseFloat('0' + ua.substr(i+4), 10);
  }
  else if ((i = ua.indexOf('hotjava')) != -1 )
  {
    // hotjava
    navigator.family  = 'hotjava';
    navigator.org    = 'sun';
    navigator.version  = parseFloat(navigator.appVersion);
  }

  window.onerror = oldOnError;
}

xbDetectBrowser();

redpajama_set_name: RedPajamaGithub


As many as 100 cows were found dead in past two days at several villages of Uttar Pradesh's Muzaffarnagar, following which, an inquiry ha bee ordered in the matter.
As per the early emerging reports, it has been stated that cows either consumed poisonous grass or polluted water which must have lead to their death.
Sub Divisional Magistrate Vijay Kumar said that an inquiry has been ordered into the incident and a team of revenue department along with veterinarians had gone to the areas where the bovines died to ascertain the cause. The cows were brought to the pastures from shelter homes.
On the hand, five stray cows lodged at a temporary shelter home in Shamli district of Uttar Pradesh, died allegedly of cold, an official said on Saturday. The deaths were reported from a shelter home in Tajpur Simbhalka village.
The incidents have come at the time when UP Chief Minister Yogi Adityanath-led BJP government has been spending a lot of money on cow welfare and pushing forward its cow and Hindutva agenda in the state ahead of 2019 Lok Sabha elections.
While the state government has allocated Rs 447 crore for cow protection, the situation on the ground is getting worse day by day, and government has miserably failed in tackling this issue so far.


The step-by-step blueprint to build a Thriving God focused business without sacrificing family, purpose or fun in the process.
This JAM PACKED course is designed to give you more clarity on what it means to be a Christian entrepreneur in the marketplace. If you are tired of chasing after what the world would call "success" and your finally ready to see God's hand moving in your life and business, than THIS is the course for you!
I've personally spent over 5+ years chasing after what the world would call "sucess" thinking if I made the money I would find true security. But after getting the money and reaching success I quickly found out that's not the case. I spent so much time striving after my income goals that I forgot about things that matter most in life, like God, family friends and having fun along the way. I reached allot of my career goals like becoming a #1 Best Selling Author in my category on Amazon and despite all the high fives I still felt something was missing.
In this course, I will be covering:What the bible says about being a Christian entrepreneur in the marketplace. How prayer and reading your bible daily can dramatically change your business and life. Why God want's you to use your gifting in business. How to utilize business as a tool to share the gospel of Jesus.
Product creation strategies you can implement that work. Why you should get clear about your target audience and how to find those you're called to serve. My favorite ways to begin building your email list even if you're starting from scratch.
Hi! My name is Ikeashia Barr, I'm a lover for Jesus, author and blogger. I love equipping Christian entrepreneurs to build thriving online businesses Gods way. I found my true purpose as an entrepreneur after 5+ years of running after what the world would call "success". I found myself burnt out and unfulfilled and so I began to seek God and he began to show me how to be an entrepreneur his way. Today I'm set free and thriving in business, I share those same awesome biblical principles with creative marketing strategies within all my courses.
After enrolling you will have a lifetime free access to the course.
No refunds are offered at this time.
The Step-By-Step Blueprint To Building A 6-Figure Business W/O Sacrificing God, Family or Purpose.


[button type="rounded" color="#COLOR_CODE" background="#7d499b" src="https://docs.google.com/forms/d/1LcULRbTzgpqhzMWlzbCMGdmIhHL6NIc0ZZF7OCZP34s/viewform?usp=send_form" target="_blank"]Job Submission Form[/button]Want your job opening shared with the EdPlus network? Complete this form for inclusion on the EdPlus website and newsletter.
I'm Alicia Robinson, Chief Career Catalyst at EdPlus Consulting, and CONNECTION is totally my thing!
Join the EdPlus Consulting Newsletter and stay in the know!


Decor: Light Green Cubicle Decorations Ideas With Wooden Computer Within How To Decorate Desk In Office How To Decorate Desk In Office Office Desk Kitchen Backsplash Armchair how to decorate office desk in diwali. how to decorate desk in office. how to decorate office desk with plants.


A young competitor in the 2011 BBCs. Photo: Alex Messenger.
Round 2 of the Midlands BMC Youth Climbing Series is coming to Creation Climbing Centre on 25th February 2017.
The competition is open to all young people so, whether you're new to climbing, or already have some experience, this could be just the competition for you.
There are three regional rounds in each of the BMC Areas followed by a Grand Final when the top 3 in each category from each of the BMC Areas, BMC Cymru/Wales, the two Areas from Scotland and Ireland take part (see below).
Wales/Cymru: BMC Cymru/Wales holds two rounds in each of their North and South areas and then hold an all BMC Cymru/Wales Final. The top 3 in each category from the BMC Cymru /Wales Final then go through to the Grand Final.
London & SE: The London & SE region holds two rounds in each of their North and South areas and then hold an all London & SE regional final. The top 3 in each category from the London & SE regional final then go through to the Grand Final.
Scotland: Mountaineering Council of Scotland hold their own MC of S Youth Climbing Series. They have two areas: Scotland North and Scotland South. The top 3 in each category in each of the two areas in Scotland go through to the Grand Final.
Ireland: Mountaineering Ireland run their own MI Youth Climbing Series in Ireland and, like Wales, the top 3 in each category from their final go through to the Grand Final.
Each event comprises 3 routes and 3 boulder problems for each category. In categories A, B and C routes are led. In categories D and E they are top-roped. For an explanation of the difference between leading and top-roping a route, please see A Parents Guide to Climbing To be eligible for the Grand Final it is necessary to take part in at least two regional rounds in the Area that a climber lives. If a series is not organised in their region climbers may enter the series in the region nearest to them.
The doors will open from 9.00am on 25th February 2017, the kettle will be on and bacon butties will be flowing from the moment we open!
Please remember that you MUST have registered in advance of the competition, on the day entries can not be accepted.
If you have any further queries then please contact philrogers@creationwall.co.uk or contact the BMC directly.


50,000 FIFA 19 coins with Comfort Trade. With this delivery method the FIFA 19 coins will be transferred to your account without you having to list any single cards. It is the most popular and easiest way of delivery - and also the safest! To buy cheap FIFA 19 coins with Comfort Trade, simply select any amount of our Comfort Trades and leave us the required informations at the checkout page. Please note that you must be logged out from your console, this is crucial for the delivery as we cannot start it until you are logged in.


Mingle is a mobile social chat room network and a great way to meet new people around you or around the world. We put a big emphasis on user authenticity, which means we don't like fake people/pictures. We think its more fun to chat with real people, not bots and fakers, etc. That's why we focus on videos. It's the newest way to meet new friends.
See videos of people around you. We have video profiles and social chat rooms where you can see videos of the people you're socializing with. There are many chat rooms to choose from. Mingle is the best mobile social chat app for socializing, and making new friends.
They say a picture is worth a thousand words and a video is at least a thousand pictures! A video can communicate so much about a person and we want to let your personality shine through! That's why we created a video focused social app for meeting new people.
See clips of people near you and when you like someone, don't be shy, just say hi!
See videos of people around you. JustSayHi is a great new way to meet new people through videos. Upload your own video and make a match!They say a picture is worth a thousand words and a video is at least a thousand pictures! A video can communicate so much about a person and we want to let your personality shine through! That's why we created a video focused social app for meeting new people.See clips of people near you and when you like someone, don't be shy, just say hi!


Dont miss the action live here at Victoria!
If you missed out on the chance to watch live from the court, we have got you covered at Victoria to ensure you can enjoy the atmosphere from the comfort of your local pub. We have a range of HD screens and a selection of drinks and food deals to enjoy so rally your mates, get the drinks in and enjoy the tennis action at Victoria.


text:
I'm A Celebrity 2021 line-up revealed including former Newcastle United star David Ginola
The retired footballer will join a host of well known faces from the worlds of soap, sport, TV, music and radio at Castle Gwrych, in Wales
The 12 famous faces taking part in I'm A Celebrity 2021 have reportedly been confirmed - and they include a former Newcastle United star.
Retired footballer David Ginola will join a host of big names from the worlds of soap, TV, sport, music and radio for this year's show, which is hosted by Geodie duo Ant and Dec and will be held at Castle Gwrych, in Wales.
The 54-year-old Frenchman will have to brave the chilly and rainy British November weather, a far cry from the sunnier climes of the programme's normal home in Australia.
Others taking part reportedly include Coronation Street actor Simon Gregson, known for his role as hapless Steve McDonald, Adam Woodyatt, who plays Eastenders' Ian Beale, and presenter Richard Madeley.
I'm A Celebrity hosts Ant & Dec stunned as line-up is confirmed (Image: Twitter)
The show, which is taking place in Abergele instead of the Australian jungle for the second time due to the "continued uncertainty" around Covid-19 and international travel, will start on November 21.
According to The Sun, here's the line-up in full:
David Ginola
David Ginola has been speaking about Newcastle United.
The 54-year-old Frenchman played for Premier League clubs Newcastle United, Tottenham and Aston Villa as a well as Ligue 1 side Paris Saint-Germain.
In May 2016 while playing a charity football match David collapsed due to a cardiac arrest and subsequently fell into a coma. He swallowed his tongue and stopped breathing, leaving him clinically dead until paramedics arrived with a defibrillator.
Surgeons performed a six-hour quadruple bypass to save his life.
Adam Woodyatt
EastEnders legend Adam Woodyatt (Image: ITV)
The 53-year-old is Eastenders' longest serving cast member. He plays Ian Beale - whose character's life has been an utter train wreck.
Adam, who made his show debut back in 1985, is on a break from Albert square.
Last year, it was reported that he had written out of forthcoming storylines and will not appear in the BBC soap for some time.
Arlene Phillips
Arlene Phillips arrives at 'TEN - A Decade of Dreams' at London Palladium on September 30, 2018 (Image: Tim P. Whitby/Getty Images)
Former Strictly judge Arlene Phillips is set to become the oldest contestant ever to take part in I'm a Celebrity.
The 78-year-old, honoured by the Queen earlier this year for services to dance and charity, will also be the first Dame on the show.
The previous oldest contestant was Boris Johnson's dad Stanley, who was 77 when he appeared in 2017.
Harry Redknapp was 71 when he triumphed in 2018 and Caitlyn Jenner was 70 when she signed up in 2019.
Simon Gregson
Steve McDonald on Coronation Street (Image: ITV)
Simon Gregson is a soap legend and has starred on in Coronation Street since he was a teen.
The actor is best known as silly Steve McDonald, the on-screen son of last year's I'm A Celeb star Beverley Callard.
He's 47-years-old and has three children. He first appeared on Coronation Street in 1989.
Frankie Bridge
Loose Women's Frankie Bridge stuns viewers with Halloween makeover (Image: Instagram)
Singer turned TV star Frankie is the wife of former Chelsea footballer Wayne - who took part in the show in 2016 and finished fifth.
Last year, Frankie opened up about her lifelong battle with depression and how she ended up admitted to a psychiatric hospital.
At 23, Frankie was already a veteran of the pop scene after being with S Club Juniors since the age of 12 before moving on to The Saturdays.
Richard Madeley
Richard Madeley could appear in this year's I'm a Celebrity (Image: ITV)
The man dubbed the real life Alan Partridge (and alleged lesser half of Richard and Judy) is rumoured to have agreed a £200,000 deal to appear on the show.
Richard is said to be a big fan of the show. He's recently been on our screens presenting Good Morning Britain.
Matty Lee
LONDON, ENGLAND - SEPTEMBER 28: Matty Lee attends the World Premiere of "NO TIME TO DIE" at the Royal Albert Hall on September 28, 2021 in London, England. (Photo by Jeff Spicer/Getty Images for EON Productions, Metro-Goldwyn-Mayer Studios, and Universal Pictures) (Image: Getty Images for EON Productions)
Tom Daley's Olympic diving partner Matty shot to fame overnight after winning gold at the Tokyo games this summer.
The Sun says the 23-year-old is "excited" about the challenges and will "thrive under pressure".
Louise Minchin
(Image: BBC)
Louise, 53, left her job presenting BBC Breakfast in September after a glittering 20-year career.
She was born in Hong Kong to a Major in the Irish Guards of the British Army and has a degree in Spanish from the University of St Andrews.
Since her BBC Breakfast exit Louise, who has taken part in various triathlons, has been enjoying swimming events.
In the summer, she shared photos of her medal from The Big Bala Swim race in Llyn Tegid, and this weekend Louise challenged herself to a swim alongside The Merthyr Mermaid at The Dyfi 13km, which is the longest estuary swim event in the UK.
LONDON, ENGLAND - SEPTEMBER 21: Naughty Boy attends the Ivor Novello Awards 2021 at Grosvenor House on September 21, 2021 in London, England. (Photo by Eamonn M. McCormack/Getty Images) (Image: Getty Images)
Music producer Naughty Boy has collaborated with Beyonce, Sam Smith and Emeli Sande, so expect some a few good celeb stories or two from him.
He's 36-years-old and was born in Watford.
In 2013, Naughty Boy released his debut album Hotel Cabana. The LP featured prominent collaborator Sandé, as well as Ed Sheeran and Gabrielle.
Snoochie Shy
Radio 1 Extra host Snoochie Shy is a model, brand ambassador, presenter as well as a DJ.
She is married to rapper Michael Dapaah, better known by his stage name Big Shaq, and has been a member of the Radio 1 team for three years.
Earlier this year she appeared on Celebrity Gogglebox alongside radio legend and journalist Jeremy Vine.
Danny Miller
Best known for playing Aaron Dingle in Emmerdale, Danny will be leaving behind his fiancé Steph Jones and their first child, who was born in October, when he appears on the show.
Kadeena Cox
Kadeena has also appeared on Channel 4's The Jump in 2017, Celebrity Great British Bake Off in 2018 and earlier this year she was on Celebrity Gogglebox with fellow sprinter Adam Gemili.
She started competing as an able bodied athlete but in 2014 appeared to have the symptoms of a stroke and after extensive tests she was diagnosed as having multiple sclerosis.
The 30-year-old was born in Leeds, England in 1991 to Jamaican migrants. Earlier this year, she was crowned the winner of Celebrity MasterChef 2021.
And on standby: DJ Locksmith
The 34-year-old, real name Leon Rolle, is best known for being a member of UK dance four-piece Rudimental -who are known for hits such as These Days with Macklemore and Jess Glynne as well as Waiting All Night and Feel The Love.
The musician and actor , real name Leon Rolle, was born in London on Christmas Day, 1986. Rolle claims his nickname came from his scampish ways during his school days. He managed to get his mitts on a spare set of keys from the janitor, giving him access to all areas.
The lowest ranked businesses in Northumberland according to food hygiene ratings
The 26 'outstanding' County Durham primary schools as rated by Ofsted
Ant & Dec


text:
PRB M409 – belgijska fugasowa mina przeciwpiechotna.

Mina PRB M409 składa się z korpusu z tworzywa sztucznego, materiału wybuchowego i zapalnika naciskowego. Masa zawartego w minie metalu jest zbliżona do 1 g co sprawia, że jest ona trudna do wykrycia przy pomocy wykrywaczy. Miny PRB M409 działają poprawnie przy temperaturach otoczenia od -32 do +52 °C. Ustawianie ręczne, minę uzbraja się poprzez wyciągnięcie zawleczki i zdjęcie pokrywy chroniącej membranę zapalnika. Wybuch następuje przy przemieszczeniu membrany na 1,5 – 3 mm w głąb korpusu. Mina M409 przy stosunkowo dużej średnicy posiada niewielką wysokość co ułatwia maskowanie min kładzionych na powierzchni ziemi. Mina M409 jest elaborowana trialenem czyli mieszaniną trotylu (70%), heksogenu (15%) i pyłu aluminiowego (15%). Efekt wybuchu 80 g tego materiału jest porównywalny z wybuchem 130 g trotylu. Dodatkową zaleta trilenu jest wysoka stabilność i odporność na wybuchy co ułatwia gęste stawianie min i utrudnia trałowanie przy pomocy ładunków wydłużonych.

Bibliografia

Miny przeciwpiechotne


Professional use of the card templates finds its expression in visiting cards. Those of you who have just started with your new business can make different kinds of visiting cards that are available online. For shares and stock business you can make your Trading Card Templates. Designation along with your name has to be put in the template to make it look concrete.
Download this eye-catching professional, modern Visiting Card template with high resolution in PSD format. It has a black and white combination that goes well for any kind of business card requirement.
This give-away resume visiting card template is available for absolutely free. It has a distinguished triangular shape with patterns in black and white on both sides of the card.
This digital visiting card is available for free. It has a rainbow design on the front to signify a pool of opportunities. It can be downloaded in both word, excel and PDF format.
This white blue visiting card template is in PSD file format. So you can easily edit all the layers and customize your own business card with all the necessary details that you want to include.
Download visiting card mockup template with realistic depth of field view from top. Choose from different colors and styles while editing, to create your own smart business card.
You can choose multiple designs and text layouts as per your wish and incorporate it in the visiting card template download. Customization as per formal basis should be the idea behind visiting cards. Details are to be added in the cards after you have downloaded it.


Evergreen perennial. These hybrids of the California types have ferny gray-green leaf clumps with upright flowering stems and flat flower heads of light orange to salmon fades to yellow in spring through summer. Low mound of foliage stays green through most winters. Deer resistant. Adaptable to various soil conditions. Light to moderate water needs once established. Hardy to 0°F or below.