BLOGGER de KATEGORI OLUSTURMA-Videolu Anlatım
By Rohat Fatih at 16:02
blog kategori, blogger kategori temelli yazı, blogger yardım, bloggerde kategori oluşturma, blogspot kategori, blogspot kategori oluşturma, blogspot kategori temelli yazı, kategori
No comments
Bildiğiniz gibi Bloggerde kategori tabanlı yazı yazma seçeneği yok. Ancak kategoriyi kendimiz biraz uğraşarak oluşturabiliriz.. Bu yazımda size blogspotta kategori oluşturmayı anlatacağım.Öncelikle Kategoriden kastımız ne? yada kategoride ne oluyor kardeşim?diyenler için bir örnekle açıklayalım;Bir video film blogu oluşturdunuz diyelim.Bu blog içerisindeki filmleri Yerli Film,Yabancı Film,Alt
BLOGGER YAZAR EKLEME-BLOGSPOT YAZAR EKLEME
By Rohat Fatih at 15:52
blogger yardım, blogger yazar ekle, bloggere nasıl yazar eklenir, blogspot yazar ekle, blogspota nasıl yazar eklenir, bloguna yazar, nasıl yazar olabilirim
No comments
Bloğunuza sizden başka kimselerinde içerik göndermesine izin vererek, bloğunuzun daha çok içeriğe sahip, daha güncel ve çeşitlilik bakımından daha zengin yazıları, farklı bakış açılarını ve bilgileri blogger aracılığıyla yayınlama imkanına sahipsiniz.Arkadaşlarınız veya tanımadığınız herhangi biri sizin bloğunuzda yazmak isterse ve sizde onaylanarsanız kişinin mail adresini girmeniz
Blogcu İçin "Bunlarda İlginizi Çekebilir " Eklentisi-LinkWithin Türkçe
By Rohat Fatih at 07:16
benzer konular eklentisi, blogger widget, blogger yardım, bunlarda ilginizi çekebilir, bunlarda ilginizi çekebilir eklentisi, bunlarda ilginizi çekebilir türkçe, linkwithin
No comments
Bloğunuza eklediğiniz her yazının sonunda "bunlarda ilginizi çekebilir" başlığı altında diğer içeriklerinizin görüntülenmesini sağlayan Link Within eklentisi ile hitinizi arttırın.Bu eklenti sayesinde yazınızı okuyan bir ziyaretçi yazının sonunda dikkatini çekebilecek diğer içerikleri de görüp onları tıklayacak.Dolayısıyla yazılarınız daha fazla okunacak.Şimdi "bunlarda ilginizi çekebilir"
Blogger Sayfa Numaralandırma Eklentisi-Page Navi
By Rohat Fatih at 06:49
blogcu sayfa eklentisi, blogger eklentileri, blogger yardım, bloggere sayfa numaraları ekle, page navi, sayfa numaralandırma navigasyonu, sayfa numarası ekle, sitene sayfalar eklentisi
No comments
Açılan ana sayfada görünen içerik sayınızın10 dan fazla olması sayfalarınızın açılmasını yavaşlatacağı bir çok makaleye konu olmuştur.Standart blogger şablonlarının hemen hemen hepsinde sayfa numaralandırılması yapılmamış.Sayfa sonlarında daha eski kayıtlar,daha yeni kayıtlar gibi ilkel görünt sergileyen linklerle sayfa geçişleri sağlanmakta.Bu da şık olmayan bir görüntü sergilemekte.Şimdi
Blogger Devamini Oku Ozelligi-Atlama Araligi Ekle
By Rohat Fatih at 06:47
ana sayfada içerik kısaltma, atlama aralığı ekle, blogger atlama aralığı ekle, blogger devamını oku, blogger yardım, devamını oku, devamını oku eklentisi, devamını oku özelliği
No comments
Bildiğimiz gibi ana sayfada ne kadar fazla ve uzun içerik olursa sayfamızın açılma süresi bir okadar uzuyor.Yapılan araştırmalarda da bir sayfa en fazla 12 sn içerisinde açılmıyorsa ziyaretçi o sayfayı terk ediyor(kendi üzerim de de denedim:)).Blogger, kullanıcılarına ana sayfada 10 dan fazla içerik olmamasını olduğu takdirde de sayfanın açılış hızını etkiliyebileceğini söylüyor.Bugün sizlere
BLOGGER SEO AYARLARI-BLOGSPOT SEO AYARLARI
By Rohat Fatih at 06:40
Blogger, blogger seo, Blogger Seo Ayarları, blogger yardım, blogspot seo, blogspot seo ayarları, webmaster
No comments
Blogger Googlenin desteğiyle dünyanın en popüler bloğu haline geldi.Google ait olan bu servisin etiketlerinin google tarafında indexlenmediği bir gerçek.Ayrıca yadığınız yazıların URL adreslerinin karmaşık ve uzun olduğunu da fark etmişsinizdir.Bloğumuzdaki bütün bu dezavantajları 5 adımda avantaja nasıl çevireceğimizi, blogspot seo ayarlarını nasıl yapacağımızı anlatalım:
1.Adım:Blogspot Başlık
1.Adım:Blogspot Başlık
Nice Nice Mutlu Huzurlu Seneler
Kolaj için tarih84 çok teşekkürler.
2011 yılı çok huzurlu çok mutlu bir yıl olmadı benim için. En büyük dertlerimiz sağlık konusunda oldu. Bu sebeple yeni yılda en çok istediğim şey sevdiklerime bol bol sağlık dilemek olacak.
2012 dilerim ki hepimize sağlık, huzur, mutluluk, bol kazanç, bol şans ve dolu dolu bir aşk getirsin.
Yüreğinizle istediğiniz tüm güzellikler tüm dilekler yeni yılda gerçekleşsin.
Yeni yılınız kutlu olsun.
Nice uzun seneler 31 Aralık'ta hep beraber olmak dileğiyle.
Sevgiler.
Then and Now: December
By bayramcigerli at 03:30
2011, Baking, California, Christmas, December, Dessert, Entree, Family, food, Friends, lists, Photos, Recap, Red, Then and Now, Throwback, Week in Review
No comments
Happy New Year's Eve! I hope that wherever you are, you are having a great weekend! Have a wonderful time tonight and I will see you next year!
The holidays are often very similar each year. There are holiday parties, get-togethers with friends and food to be eaten and presents to open with family. This December was no different. There were many people to see that I see every year, and many holiday traditions that were observed this year, just as they were last year. There were also a few things that were different. Here is December 2010 vs 2011, The Who, The What and The Where.
The Who: Every year I get together with friends in San Francisco for a snackapalooza. This year was no different, except we got together in November instead! So we met up in Sacramento for some carb loading before the marathon instead. Also, I get together with my old HS buddies on the day after Christmas each year. It's great fun and I am glad we have kept the tradition alive!
2010: Snackapalooza, San Francisco, 2011: CIM carb loading |
2010: Hail, grey skies and a large group, 2011: Sun in the eyes and less people |
2010: Walks, 2011: Runs |
2010: Birds + great reflections! 2011: Birds but no reflection |
2010: Small cheese platter, 2011: large cheese platter! (2012: Cheese table?) |
2010: Pumpkin Choc Chip, 2011: Macaroon |
2010: Iowa |
California |
What were you doing last December? Do you do the same thing every Christmas or are your holidays varied?
The abolitionist William Lloyd Garrison...
- attacked the US Constitution because it condoned slavery.
- was a minister who came to his antislavery convictions through the evangelical crusades of the 1820s.
- demanded the immediate abolition of slavery, with federally funded compensation for former slaveholders.
- criticized the colonizationists for moving too slowly in their efforts to emancipate slaves.
ANSWER: The abolitionist William Lloyd Garrison attacked the US Constitution because it condoned slavery.
In the aftermath of the nullification crisis, President Jackson responded to southern concerns about the tariff by...
- insisting that high protective tariffs were in the national interest.
- attempting unsuccessfully to have Congress repeal the Tariff of 1832.
- persuading Congress to pass new legislation enacting a compromise tariff to gradually reduce duties.
- ignoring the issue.
ANSWER: In the aftermath of the nullification crisis, President Jackson responded to southern concerns about the tariff by persuading Congress to pass new legislation enacting a compromise tariff to gradually reduce duties.
One social change resulting from the Industrial Revolution in early nineteenth century America was that members of the upper class...
- came to hold the same cultural and religious values as wage earners in contrast to the elitism that in the eighteenth century had kept the gentry and the "common people" apart.
- openly distanced themselves by values and lifestyle from wage earners in contrast to the shared cultural and religious values that had united the gentry and ordinary folk in the eighteenth century.
- became more hypocritical, pretending to share cultural and religious values with wage earners, but actually behaving very differently.
- tended to claim that they had risen "from rags to riches" and to flaunt their crude taste and rough manners in contrast to "gentlemanly" values of the eighteenth-century elites.
ANSWER: One social change resulting from the Industrial Revolution in early nineteenth century America was that members of the upper class openly distanced themselves by values and lifestyle from wage earners in contrast to the shared cultural and religious values that had united the gentry and ordinary folk in the eighteenth century.
Which of the following statements most accurately characterizes the American party system by the early 1840s?
- As the 1840 election demonstrated, the Whigs held the edge in party discipline and mass loyalty.
- The two parties offered virtually the same social and economic platform but employed differing campaign styles to attract voters.
- The practice of Americans voting for a particular party along ethnic and religious lines began to emerge.
- The Democrats had a major advantage in their wealth and the cohesiveness of their leadership and support.
ANSWER: The practice of Americans voting for a particular party along ethnic and religious lines began to emerge.
The Spanish Franciscan missionaries...
- tried to impose cultural assimilation and forced labor along with religious conversion of indigenous peoples.
- became large landowners who collected tribute from the Indians.
- outlawed slavery in the Spanish colonies.
- adapted to native culture almost completely.
ANSWER: The Spanish Franciscan missionaries tried to impose cultural assimilation and forced labor along with religious conversion of indigenous peoples.
During their first couple of years in the Jamestown colony, the English migrants...
- doubled the size of their population.
- produced an agricultural surplus--enough to trade with the Native Americans.
- lived remarkably disease-free.
- suffered from famine and diseases that killed more than half the population.
ANSWER: During their first couple of years in the Jamestown colony, the English migrants suffered from famine and diseases that killed more than half the population.
The Fifteenth Amendment...
- prohibited state governments from using property requirements to disqualify blacks from voting.
- gave the full vote to all adult African Americans.
- prohibited state governments from using literacy tests and poll taxes to prevent blacks from voting.
- forbade states from denying any citizen the right to vote on the grounds of race, color, or previous condition as a slave.
ANSWER: The Fifteenth Amendment forbade states from denying any citizen the right to vote on the grounds of race, color, or previous condition as a slave.
COĞRAFİ KOORDİNAT
COĞRAFİ KOORDİNAT
Dünya üzerindeki herhangi bir nokta veya alanın bulunduğu yeri belirten enlem ve boylam değerine o yerin “coğrafi koordinatları” denir.
ENLEMİN ETKİLERİ
VII. YER ÇEKİMİ: Enleme bağlı olarak dünya üzerinde yer çekimi de değişmektedir. Yer çekimi Ekvatordan kutuplara gidildikçe artar.
.
Dünya üzerindeki herhangi bir nokta veya alanın bulunduğu yeri belirten enlem ve boylam değerine o yerin “coğrafi koordinatları” denir.
Enlem Nedir
Dünya üzerinde herhangi bir noktanın ekvatora açı cinsinden olan uzaklığına o noktanın enlemi denir. Derece, dakika , saniye cinsinden gösterilir. Örneğin Ankara 390 59’ 28’’ kuzey enlemi üzerinde yer alır. Yani Ankara ekvatorun 39 derece, 59 dakika,28 saniye kuzeyinde bulunur.
ENLEMİN ETKİLERİ
Enlem ekvatora yakınlığı ve uzaklığı ifade eder. Ekvatordan kutuplara doğru gidildikçe (Ekvatordan uzaklaştıkça) enleme bağlı olarak bazı coğrafi özellikler değişir. Bunlar:
X noktası Y noktasına göre ekvatora daha yakındır. Bu durum her iki merkezde farklı coğrafi özelliklerin görülmesine neden olur. Buna neden olan enlem farklılığıdır. |
I. GÜNEŞ IŞINLARININ GELİŞ AÇISI: Ekvatordan kutuplara doğru gidildikçe güneş ışınlarının geliş açısı küçülür.
İklim: Ekvatordan kutuplara gidildikçe sıcaklıklar kademeli olarak azalır. Bu da ana iklim kuşaklarının oluşmasına neden olmuştur. Ana iklim kuşaklarının belirleyen güneş ışınlarının geliş açısı nedeniyle sıcak ekvatordan kutuplara doğru azalmaktadır bu da aşağıdaki sonuçları doğurur.
a) Rüzgarlar: Alçak enlemlerde sıcaklıklar güneş ışınlarının düşme açısının büyük olması nedeniyle daha fazladır. Alçak enlemlerden yüksek enlemlere doğru esen rüzgarlar vardıkları yerlerin sıcaklığını yükseltirken, yüksek enlemlerden alçak enlemlere doğru esen rüzgarlar düşürürler.
b) Bitki Örtüsü: Enleme bağlı iklim koşullarının değişmesi bitki örtüsünün de değişmesine neden olmaktadır. Ekvatoral kuşakta ısınma, buharlaşma, yağış miktarları fazla olduğu için bitki örtüsü gürdür. Bu alanda tropikal yağmur ormanlarının bulunması enlemin etkisiyle ilgili bir durumdur. Ekvatordan kutuplara gidildikçe bitki örtüsü seyrekleşmekte ve kutuplara doğru gidildikçe daha fazla soğuk ve kuraklığa dayanıklı türler ortaya çıkmaktadır.
c) Toprak Çeşidi: Ekvatordan kutuplara gidildikçe değişen iklim ve bitki koşullarına bağlı olarak toprak çeşitleri de değişir.
d) Hayvan Türleri: Doğal ortamda hiç bir insan etkisi olmadan yaşayan hayvanlar, o enlem kuşağının hayvan türüdür. Tropikal kuşakta Zebralar, aslanlar...vb yaşarken, kutup kuşağında kutup ayıları, foklar, penguenler yaşamaktadır.
e) Akarsu Rejimleri: Ekvatoral kuşakta sürekli ve düzenli bir yağış yağışlar görüldüğü için burada akarsu rejimleri de düzenlidir. Orta Kuşakta düzensiz yağış ve sıcaklık koşulları akarsu rejimlerini de düzensiz kılmıştır.
f) Deniz Sularının Sıcaklık ve Tuzluluk Oranları: Ekvatordan kutuplara gidildikçe sıcaklıkların düşmesine bağlı olarak deniz suyunun da sıcaklığı düşmektedir. Sıcaklığın düşmesi, denizlerde buharlaşmayı da düşüreceği için ekvatordan kutuplara gidildikçe deniz sularının tuzluluk oranı da düşmektedir.
g) Nüfus Dağılımı : Ekvator çevresinde sıcaklık,nem,gür bitki örtüsü, kutuplar çevresinin de aşırı soğuk olması buralarda yaşamayı zorlaştırdığı için bu alanlar dünyanın seyrek nüfuslu alanlarını, Orta Kuşak (Ilıman Kuşak) uygun sıcaklık ve yağış koşulları nedeniyle dünyanın sık nüfuslu alanlarını oluşturmaktadır.
Dünya nüfusunun önemli kısmı orta kuşakta yaşamaktadır. Dört mevsimin belirgin olarak yaşanması bu alanları tarımsal ürün çeşitliliği açısından zengin kılmıştır. |
h) Konut Tipi ve Malzemesi: İnsanlar ev yaparken bol ve ucuza bulabileceği malzemeyi inşaat malzemesi olarak tercih etmektedir. Gür bitki örtüsünün olduğu alanlarda ağaç, bitki örtüsünün olmadığı alanlarda taş ya da kerpiç yapı malzemesi olarak tercih edilmektedir. Kutuplarda Eskimolar’ın buzdan yaptıkları kulübelerde (İglo) yaşıyor olmaları buna güzel bir örnektir.
i) Daimi Kar Sınırı: Ekvatordan kutuplara gidildikçe daimi kar sınıra da deniz seviyesine doğru inmektedir. Ekvator çevresinde daimi kar sınırı, 4000m üzeri iken, Orta Kuşakta 3500m, Kutup Daireleri içinde kalan alanlarda ise deniz seviyesine (0m) kadar inmektedir.
j) Tarım Üst Sınırı: Ekvator çevresinde (Sıcak Kuşak) 3000 m’ye kadar olan alanlarda tarım yapılabilmekte iken, Orta Kuşakta (Ilıman Kuşak) tarım üst sınırı 2500m’dir. Kutup kuşağında ise (600 Kuzey- Güney enlemleri civarı)deniz seviyesine yakın alanlarda tarım yapılabilmektedir. Örneğin 640 Kuzey enlemi üzerinde yer alan Norveç’te deniz seviyesine yakın olan Oslo Ovaları’nda tarım yapılır.
k) Tarım Ürünleri: Bir alanda yetiştirilen tarım ürünü türleri alanın sıcaklık, yağış gibi özelliklerine bağlı olarak belirlenmektedir. Buna göre ekvatordan kutuplara gidildikçe tarım ürünleri de değişmektedir.
II. AYDINLANMA : Ekvatordan kutuplara gidildikçe güneşin ufuk çizgisi üzerinde kalma süresi ve birim ışının (güneş ışını) aydınlatma alanı artar.
III. GÜNEŞİN UFUK DÜZLEMİ ÜZERİNDEKİ YÜKSEKLİĞİ: Dönenceler arasında yıl içerisinde güneş ufuk düzleminde tam tepe noktaya ulaşırken, dönenceler dışındaki sahalarda hiç bir zaman tam tepe noktaya ulaşmaz. Güneşin ufuk düzlemi üzerindeki yüksekliği mevsime ve enleme göre değişir.
IV. GÖLGE BOYU: Ekvatordan kutuplara gidildikçe, güneş ışınları yere daha eğik açılarla ulaştığından, gölge boyları da ekvatordan kutuplara gidildikçe uzar.
V. GECE – GÜNDÜZ UZUNLUKLARI: Ekvator düzlemi ile yörünge düzlemi arasındaki açı (ve ya eksen eğikliği) nedeniyle 21 Mart ve 23 Eylül tarihleri hariç Ekvatordan kutuplara gidildikçe gece gündüz süreleri arasındaki fark artar.
VI. GÜNEŞİN DOĞUŞ VE BATIŞ SÜRELERİ: Ekvatordan kutuplara doğru gidildikçe güneşin ufuk çizgisinde yükseliş (Tan) ve batış (Gurub) süresi enleme bağlı olarak artmaktadır.
VII. YER ÇEKİMİ: Enleme bağlı olarak dünya üzerinde yer çekimi de değişmektedir. Yer çekimi Ekvatordan kutuplara gidildikçe artar.
BOYLAM NEDİR |
Yer yüzünde her hangi bir noktanın başlangıç meridyenine olan açısal uzaklığına (Derece, dakika, saniye cinsinden), o noktanın boylamı denir.
· Dünya batıdan doğuya doğru döndüğü için, boylam dereceleri farklı iki yer arasında daha doğuda olanın yerel saati batıda olanına göre daha ileridedir. Buna boylamın etkisi denir.
.
Run Like The Wind
When I first started running, it was difficult. The miles went by slowly; it was hot outside; the work days were long and the last thing I wanted to do afterwards was suit up and go for a run. If you have ever run a mile, you know that in every run, the first couple of miles are hard. Your breathing is strained; your face is burning; your legs are screaming; your mind is wondering why you would do this to yourself. Then the endorphins kick in and it becomes, not necessarily easy, but tolerable. Easier. After that, you get through the run and when you are done, you feel good.
Snowy run on Christmas Day |
Lately, I have not had that dreaded feeling of the first couple of miles. The runs have started out, dare I say it, fun. Even though my heart and lungs still need to get used to the activity, it’s not as bad as it could be. It doesn’t feel horrible. It doesn’t even feel okay. It feels good! This is a little strange to me, since I have been running trails lately, which are hilly, and also I am running at about 2500 feet elevation, which although is not high, is higher than the 400 in Missouri or the 49 in San Francisco!
It’s still hard to get out the door sometimes. I am comfy in my pajamas or I’ve had a long day or it’s too cold outside. But once the run starts, all those feelings go away. Today my Dad and I ran 6 miles, with a total elevation gain of about 2500 ft. It was hard. The hills were tiring. It felt great though. As I was running back down the trail with the wind flowing (literally) through my hair, I almost giggled with glee because it felt so good! Who knew, running CAN be fun!?
Trail running with Dad |
I know it’s great when I feel stressed and need something to calm me down; it’s a nice way to get out of the house; it’s good for an energy kick, for fitness and for health. But I never really did it for fun. I always heard other people say how much they liked running and I never really got it. I tried to think back over my time running to figure out when it switched from being a chore to being something that I like doing. I am not sure when it was, but it’s happened. After all this time running, I think I like it. I really like it.
** I am still participating in the HBBC, hosted by Run to The Finish! There is only one more week! Here are the totals for the week of December 24 – 30: 25 miles / 7 days freggies (I took this from Elle of Eat, Run, Sail) = 31 total points** Don't forget to pop over to Jill's to see other participants of Fitness Friday! **
Happy New Year!
Happy New Year!
Bloguna Kar Yağdırmak İsteyen Var mı?
By Rohat Fatih at 15:38
Bloga Kar yağdırmak, Efekt, Kar Efekti, Kar yağsın, Snow, Snow Efeckt
No comments
Uzun bir zamandır yani neredeyse bir aydır bir kar yağdırma efekti arıyordum. Nihayet bir tane buldum. Diğer bulduklarım ya sayfayı kaydırıyor yada kaydırma çubuğunun titreşmesine neden oluyordu.
Bu kod hem güzel hem de yağan kar sayfanın altında birikiyor.
Yapmanız gerekenler. Blog düzenleme sayfasında YERLEŞİM bölümüne gitmek GADGET ekle seçeneğine tıkla. Sonra oradan HTML/JAVA SCRİPT gadgetını seç.
Ondan sonra yapman gereken tek şey buradaki kodu kopyalayıp HTML alanına yapıştırmak. Sayfadan ayrılmadan değişiklikleri kaydetmeyi unutmayın. ;)
Yani bu kodu:
<script>/*
DHTML PNG Snowstorm! OO-style Jascript-based Snow effect
--------------------------------------------------------
Version 1.2.20041121a
Dependencies: GIF/PNG images (0 through 4.gif/png)
Code by Scott Schiller - www.schillmania.com
--------------------------------------------------------
Description:
Initializes after body onload() by default (via addEventHandler() call at bottom.)
Properties:
usePNG
---------------
Enables PNG images if supported ("false" disables all PNG usage)
flakeTypes
---------------
Sets the range of flake images to use (eg. a value of 5
will use images ranging from 0.png to 4.png.)
flakesMax
---------------
Sets the maximum number of snowflakes that can exist on
the screen at any given time.
flakesMaxActive
---------------
Sets the limit of "falling" snowflakes (ie. moving, thus
considered to be "active".)
vMax
---------------
Defines the maximum X and Y velocities for the storm.
A range up to this value is selected at random.
flakeWidth
---------------
The width (in pixels) of each snowflake image.
flakeHeight
---------------
Height (pixels) of each snowflake image.
flakeBottom
---------------
Limits the "bottom" coordinate of the snow.
snowCollect
---------------
Enables snow to pile up (slowly) at bottom of window.
Can be very CPU/resource-intensive over time.
*/
var snowStorm = null;
function SnowStorm() {
var s = this;
var storm = this;
this.timers = [];
this.flakes = [];
this.disabled = false;
this.terrain = [];
// User-configurable variables
// ---------------------------
var usePNG = true;
var imagePath = 'http://www.wilson.com.pt/neve/image/snow/'; // relative path to snow images
var flakeTypes = 6;
var flakesMax = 240;
var flakesMaxActive = 128;
var vMax = 2.5;
var flakeWidth = 5;
var flakeHeight = 5;
var flakeBottom = null; // Integer for fixed bottom, 0 or null for "full-screen" snow effect
var snowCollect = true;
var showStatus = true;
// --- End of user section ---
var isIE = (navigator.appName.toLowerCase().indexOf('internet explorer')+1);
var isWin9X = (navigator.appVersion.toLowerCase().indexOf('windows 98')+1);
var isOpera = (navigator.userAgent.toLowerCase().indexOf('opera ')+1 || navigator.userAgent.toLowerCase().indexOf('opera/')+1);
if (isOpera) isIE = false; // Opera (which is sneaky, pretending to be IE by default)
var screenX = null;
var screenY = null;
var scrollY = null;
var vRndX = null;
var vRndY = null;
function rnd(n,min) {
if (isNaN(min)) min = 0;
return (Math.random()*n)+min;
}
this.randomizeWind = function() {
vRndX = plusMinus(rnd(vMax,0.2));
vRndY = rnd(vMax,0.2);
if (this.flakes) {
for (var i=0; i<this.flakes.length; i++) {
if (this.flakes[i].active) this.flakes[i].setVelocities();
}
}
}
function plusMinus(n) {
return (parseInt(rnd(2))==1?n*-1:n);
}
this.resizeHandler = function() {
if (window.innerWidth || window.innerHeight) {
screenX = window.innerWidth-(!isIE?24:2);
screenY = (flakeBottom?flakeBottom:window.innerHeight);
} else {
screenX = (document.documentElement.clientWidth||document.body.clientWidth||document.body.scrollWidth)-(!isIE?8:0);
screenY = flakeBottom?flakeBottom:(document.documentElement.clientHeight||document.body.clientHeight||document.body.scrollHeight);
}
s.scrollHandler();
}
this.scrollHandler = function() {
// "attach" snowflakes to bottom of window if no absolute bottom value was given
scrollY = (flakeBottom?0:parseInt(window.scrollY||document.documentElement.scrollTop||document.body.scrollTop));
if (isNaN(scrollY)) scrollY = 0; // Netscape 6 scroll fix
if (!flakeBottom && s.flakes) {
for (var i=0; i<s.flakes.length; i++) {
if (s.flakes[i].active == 0) s.flakes[i].stick();
}
}
}
this.freeze = function() {
// pause animation
if (!s.disabled) {
s.disabled = 1;
} else {
return false;
}
if (!isWin9X) {
clearInterval(s.timers);
} else {
for (var i=0; i<s.timers.length; i++) {
clearInterval(s.timers[i]);
}
}
}
this.resume = function() {
if (s.disabled) {
s.disabled = 0;
} else {
return false;
}
s.timerInit();
}
this.stop = function() {
this.freeze();
for (var i=0; i<this.flakes.length; i++) {
this.flakes[i].o.style.display = 'none';
}
removeEventHandler(window,'scroll',this.scrollHandler,false);
removeEventHandler(window,'resize',this.resizeHandler,false);
}
this.SnowFlake = function(parent,type,x,y) {
var s = this;
var storm = parent;
this.type = type;
this.x = x||parseInt(rnd(screenX-12));
this.y = (!isNaN(y)?y:-12);
this.vX = null;
this.vY = null;
this.vAmpTypes = [2.0,1.0,1.25,1.0,1.5,1.75]; // "amplification" for vX/vY (based on flake size/type)
this.vAmp = this.vAmpTypes[this.type];
this.active = 1;
this.o = document.createElement('img');
this.o.style.position = 'absolute';
this.o.style.width = flakeWidth+'px';
this.o.style.height = flakeHeight+'px';
this.o.style.fontSize = '1px'; // so IE keeps proper size
this.o.style.zIndex = 2;
this.o.src = imagePath+this.type+(pngHandler.supported && usePNG?'.png':'.gif');
document.body.appendChild(this.o);
if (pngHandler.supported && usePNG) pngHandler.transform(this.o);
this.refresh = function() {
this.o.style.left = this.x+'px';
this.o.style.top = this.y+'px';
}
this.stick = function() {
s.o.style.top = (screenY+scrollY-flakeHeight-storm.terrain[Math.floor(this.x)])+'px';
// called after relative left has been called
}
this.vCheck = function() {
if (this.vX>=0 && this.vX<0.2) {
this.vX = 0.2;
} else if (this.vX<0 && this.vX>-0.2) {
this.vX = -0.2;
}
if (this.vY>=0 && this.vY<0.2) {
this.vY = 0.2;
}
}
this.move = function() {
this.x += this.vX;
this.y += (this.vY*this.vAmp);
this.refresh();
if (this.vX && screenX-this.x<flakeWidth+this.vX) { // X-axis scroll check
this.x = 0;
} else if (this.vX<0 && this.x<0-flakeWidth) {
this.x = screenX-flakeWidth; // flakeWidth;
}
var yDiff = screenY+scrollY-this.y-storm.terrain[Math.floor(this.x)];
if (yDiff<flakeHeight) {
this.active = 0;
if (snowCollect) {
var height = [0.75,1.5,0.75];
for (var i=0; i<2; i++) {
storm.terrain[Math.floor(this.x)+i+2] += height[i];
}
}
this.o.style.left = ((this.x-(!isIE?flakeWidth:0))/screenX*100)+'%'; // set "relative" left (change with resize)
if (!flakeBottom) {
this.stick();
}
}
}
this.animate = function() {
// main animation loop
// move, check status, die etc.
this.move();
}
this.setVelocities = function() {
this.vX = vRndX+rnd(vMax*0.12,0.1);
this.vY = vRndY+rnd(vMax*0.12,0.1);
}
this.recycle = function() {
this.setVelocities();
this.vCheck();
this.x = parseInt(rnd(screenX-flakeWidth-1));
this.y = parseInt(rnd(640)*-1)-flakeHeight;
this.active = 1;
}
this.recycle(); // set up x/y coords etc.
this.refresh();
}
this.snow = function() {
var active = 0;
var used = 0;
var waiting = 0;
for (var i=this.flakes.length-1; i>0; i--) {
if (this.flakes[i].active == 1) {
this.flakes[i].animate();
active++;
} else if (this.flakes[i].active == 0) {
used++;
} else {
waiting++;
}
}
if (snowCollect && !waiting) { // !active && !waiting
// create another batch of snow
this.createSnow(flakesMaxActive,true);
}
if (active<flakesMaxActive) {
with (this.flakes[parseInt(rnd(this.flakes.length))]) {
if (!snowCollect && active == 0) {
recycle();
} else if (active == -1) {
active = 1;
}
}
}
}
this.createSnow = function(limit,allowInactive) {
if (showStatus) window.status = 'Creating snow...';
for (var i=0; i<limit; i++) {
this.flakes[this.flakes.length] = new this.SnowFlake(this,parseInt(rnd(flakeTypes)));
if (allowInactive || i>flakesMaxActive) this.flakes[this.flakes.length-1].active = -1;
}
if (showStatus) window.status = '';
}
this.timerInit = function() {
this.timers = (!isWin9X?setInterval("snowStorm.snow()",20):[setInterval("snowStorm.snow()",75),setInterval("snowStorm.snow()",25)]);
}
this.init = function() {
for (var i=0; i<8192; i++) {
this.terrain[i] = 0;
}
this.randomizeWind();
this.createSnow(snowCollect?flakesMaxActive:flakesMaxActive*2); // create initial batch
addEventHandler(window,'resize',this.resizeHandler,false);
addEventHandler(window,'scroll',this.scrollHandler,false);
// addEventHandler(window,'scroll',this.resume,false); // scroll does not cause window focus. (odd)
// addEventHandler(window,'blur',this.freeze,false);
// addEventHandler(window,'focus',this.resume,false);
this.timerInit();
}
this.resizeHandler(); // get screen coordinates
if (screenX && screenY && !this.disabled) {
this.init();
}
}
function snowStormInit() {
setTimeout("snowStorm = new SnowStorm()",500);
}
// Generic addEventHandler() wrapper
// ---------------------------------
// A generic interface for adding DOM event handlers
// Version 1.2.20040404
//
// Code by Scott Schiller | schillmania.com
//
// Revision history:
// ---------------------------------
// v1.1.20031218: initial deploy
// v1.2.20040404: added post-load event check
var addEventHandler = null;
var removeEventHandler = null;
function postLoadEvent(eventType) {
// test for adding an event to the body (which has already loaded) - if so, fire immediately
return ((eventType.toLowerCase().indexOf('load')>=0) && document.body);
}
function addEventHandlerDOM(o,eventType,eventHandler,eventBubble) {
if (!postLoadEvent(eventType)) {
o.addEventListener(eventType,eventHandler,eventBubble);
} else {
eventHandler();
}
}
function removeEventHandlerDOM(o,eventType,eventHandler,eventBubble) {
o.removeEventListener(eventType,eventHandler,eventBubble);
}
function addEventHandlerIE(o,eventType,eventHandler) { // IE workaround
if (!eventType.indexOf('on')+1) eventType = 'on'+eventType;
if (!postLoadEvent(eventType)) {
o.attachEvent(eventType,eventHandler); // Note addition of "on" to event type
} else {
eventHandler();
}
}
function removeEventHandlerIE(o,eventType,eventHandler) {
if (!eventType.indexOf('on')+1) eventType = 'on'+eventType;
o.detachEvent(eventType,eventHandler);
}
function addEventHandlerOpera(o,eventType,eventHandler,eventBubble) {
if (!postLoadEvent(eventType)) {
(o==window?document:o).addEventListener(eventType,eventHandler,eventBubble);
} else {
eventHandler();
}
}
function removeEventHandlerOpera(o,eventType,eventHandler,eventBubble) {
(o==window?document:o).removeEventListener(eventType,eventHandler,eventBubble);
}
if (navigator.userAgent.toLowerCase().indexOf('opera ')+1 || navigator.userAgent.toLowerCase().indexOf('opera/')+1) {
// opera is dumb at times.
addEventHandler = addEventHandlerOpera;
removeEventHandler = removeEventHandlerOpera;
} else if (document.addEventListener) { // DOM event handler method
addEventHandler = addEventHandlerDOM;
removeEventHandler = removeEventHandlerDOM;
} else if (document.attachEvent) { // IE event handler method
addEventHandler = addEventHandlerIE;
removeEventHandler = removeEventHandlerIE;
} else { // Neither "DOM level 2" (?) methods supported
addEventHandler = function(o,eventType,eventHandler,eventBubble) {
o['on'+eventType] = eventHandler;
// Multiple events could be added here via array etc.
}
removeEventHandler = function(o,eventType,eventHandler,eventBubble) {}
}
// Safari 1.0 does not support window.scroll events - apparently netscape 6.0/6.2 and mozilla 1.4 also.
// Refer to events support table at http://www.quirksmode.org/js/events_compinfo.html
// -- end addEventHandler definition --
/*
PNGHandler: Object-Oriented Javascript-based PNG wrapper
--------------------------------------------------------
Version 1.2.20040803
Code by Scott Schiller - www.schillmania.com
--------------------------------------------------------
Description:
Provides gracefully-degrading PNG functionality where
PNG is supported natively or via filters (Damn you, IE!)
Should work with PNGs as images and DIV background images.
--------------------------------------------------------
Revision history
--------------------------------------------------------
1.2
- Added refresh() for changing PNG images under IE
- Class extension: "scale" causes PNG to scale under IE
--------------------------------------------------------
Known bugs
--------------------------------------------------------
- ie:mac doesn't support PNG background images.
- Safari doesn't support currentStyle() - can't parse BG
via CSS (ie. for a DIV with a PNG background by class)
*/
function PNGHandler() {
var self = this;
this.na = navigator.appName.toLowerCase();
this.nv = navigator.appVersion.toLowerCase();
this.isIE = this.na.indexOf('internet explorer')+1?1:0;
this.isWin = this.nv.indexOf('windows')+1?1:0;
this.isIEMac = (this.isIE&&!this.isWin);
this.isIEWin = (this.isIE&&this.isWin);
this.ver = this.isIE?parseFloat(this.nv.split('msie ')[1]):parseFloat(this.nv);
this.isMac = this.nv.indexOf('mac')+1?1:0;
this.isOpera = (navigator.userAgent.toLowerCase().indexOf('opera ')+1 || navigator.userAgent.toLowerCase().indexOf('opera/')+1);
if (this.isOpera) this.isIE = false; // Opera filter catch (which is sneaky, pretending to be IE by default)
this.filterID = 'DXImageTransform.Microsoft.AlphaImageLoader';
this.supported = false;
this.transform = self.doNothing;
this.filterMethod = function(o) {
// IE 5.5+ proprietary filter garbage (boo!)
// Create new element based on old one. Doesn't seem to render properly otherwise (due to filter?)
// use DOM "currentStyle" method, so rules inherited via CSS are picked up.
if (o.nodeName != 'IMG') {
var b = o.currentStyle.backgroundImage.toString(); // parse out background image URL
o.style.backgroundImage = 'none';
// Parse out background image URL from currentStyle.
var i1 = b.indexOf('url("')+5;
var newSrc = b.substr(i1,b.length-i1-2).replace('.gif','.png'); // find first instance of ") after (", chop from string
o.style.writingMode = 'lr-tb'; // Has to be applied so filter "has layout" and is displayed. Seriously. Refer to http://msdn.microsoft.com/workshop/author/filter/reference/filters/alphaimageloader.asp?frame=true
o.style.filter = "progid:"+self.filterID+"(src='"+newSrc+"',sizingMethod='"+(o.className.indexOf('scale')+1?'scale':'crop')+"')";
} else if (o.nodeName == 'IMG') {
var newSrc = o.getAttribute('src').replace('.gif','.png');
// apply filter
o.src = 'image/none.gif'; // get rid of image
o.style.filter = "progid:"+self.filterID+"(src='"+newSrc+"',sizingMethod="+(o.className.indexOf('scale')+1?'scale':'crop')+"')";
o.style.writingMode = 'lr-tb'; // Has to be applied so filter "has layout" and is displayed. Seriously. Refer to http://msdn.microsoft.com/workshop/author/filter/reference/filters/alphaimageloader.asp?frame=true
}
}
this.pngMethod = function(o) {
// Native transparency support. Easy to implement. (woo!)
bgImage = this.getBackgroundImage(o);
if (bgImage) {
// set background image, replacing .gif
o.style.backgroundImage = 'url('+bgImage.replace('.gif','.png')+')';
} else if (o.nodeName == 'IMG') {
o.src = o.src.replace('.gif','.png');
} else if (!bgImage) {
// no background image
}
}
this.getBackgroundImage = function(o) {
var b, i1; // background-related variables
var bgUrl = null;
if (o.nodeName != 'IMG' && !(this.isIE && this.isMac)) { // ie:mac PNG support broken for DIVs with PNG backgrounds
if (document.defaultView) {
if (document.defaultView.getComputedStyle) {
b = document.defaultView.getComputedStyle(o,'').getPropertyValue('background-image');
i1 = b.indexOf('url(')+4;
bgUrl = b.substr(i1,b.length-i1-1);
} else {
// no computed style
return false;
}
} else {
// no default view
return false;
}
}
return bgUrl;
}
this.doNothing = function() {}
this.supportTest = function() {
// Determine method to use.
// IE 5.5+/win32: filter
if (this.isIE && this.isWin && this.ver >= 5.5) {
// IE proprietary filter method (via DXFilter)
self.transform = self.filterMethod;
} else if (!this.isIE && this.ver < 5) {
// No PNG support or broken support
// Leave existing content as-is
self.transform = null;
return false;
} else if (!this.isIE && this.ver >= 5 || (this.isIE && this.isMac && this.ver >= 5)) { // version 5+ browser (not IE), or IE:mac 5+
self.transform = self.pngMethod;
} else {
// Presumably no PNG support. GIF used instead.
self.transform = null;
return false;
}
return true;
}
this.init = function() {
this.supported = this.supportTest();
}
}
function getElementsByClassName(className,oParent) {
var doc = (oParent||document);
var matches = [];
var nodes = doc.all||doc.getElementsByTagName('*');
for (var i=0; i<nodes.length; i++) {
if (nodes[i].className == className || nodes[i].className.indexOf(className)+1 || nodes[i].className.indexOf(className+' ')+1 || nodes[i].className.indexOf(' '+className)+1) {
matches[matches.length] = nodes[i];
}
}
return matches; // kids, don't play with fire. ;)
}
// Instantiate and initialize PNG Handler
var pngHandler = new PNGHandler();
pngHandler.init();
addEventHandler(window,'load',snowStormInit,false);
</script>
Kodu bu siteden aldım: http://siteneeklekodlari.blogspot.com/2011/12/sayfa-altnda-biriken-kar-kodu.html
Bol karlı günler dilerim. Sevgiler.
Blogda sağ tık engeli olduğundan kopyalamada sıkıntı olabilir. İsteyenler mail adresini yorum olarak bırakırsa kodu gönderebilirim ;)
Blogda sağ tık engeli olduğundan kopyalamada sıkıntı olabilir. İsteyenler mail adresini yorum olarak bırakırsa kodu gönderebilirim ;)
Yani bu kodu:
<script>/*
DHTML PNG Snowstorm! OO-style Jascript-based Snow effect
--------------------------------------------------------
Version 1.2.20041121a
Dependencies: GIF/PNG images (0 through 4.gif/png)
Code by Scott Schiller - www.schillmania.com
--------------------------------------------------------
Description:
Initializes after body onload() by default (via addEventHandler() call at bottom.)
Properties:
usePNG
---------------
Enables PNG images if supported ("false" disables all PNG usage)
flakeTypes
---------------
Sets the range of flake images to use (eg. a value of 5
will use images ranging from 0.png to 4.png.)
flakesMax
---------------
Sets the maximum number of snowflakes that can exist on
the screen at any given time.
flakesMaxActive
---------------
Sets the limit of "falling" snowflakes (ie. moving, thus
considered to be "active".)
vMax
---------------
Defines the maximum X and Y velocities for the storm.
A range up to this value is selected at random.
flakeWidth
---------------
The width (in pixels) of each snowflake image.
flakeHeight
---------------
Height (pixels) of each snowflake image.
flakeBottom
---------------
Limits the "bottom" coordinate of the snow.
snowCollect
---------------
Enables snow to pile up (slowly) at bottom of window.
Can be very CPU/resource-intensive over time.
*/
var snowStorm = null;
function SnowStorm() {
var s = this;
var storm = this;
this.timers = [];
this.flakes = [];
this.disabled = false;
this.terrain = [];
// User-configurable variables
// ---------------------------
var usePNG = true;
var imagePath = 'http://www.wilson.com.pt/neve/image/snow/'; // relative path to snow images
var flakeTypes = 6;
var flakesMax = 240;
var flakesMaxActive = 128;
var vMax = 2.5;
var flakeWidth = 5;
var flakeHeight = 5;
var flakeBottom = null; // Integer for fixed bottom, 0 or null for "full-screen" snow effect
var snowCollect = true;
var showStatus = true;
// --- End of user section ---
var isIE = (navigator.appName.toLowerCase().indexOf('internet explorer')+1);
var isWin9X = (navigator.appVersion.toLowerCase().indexOf('windows 98')+1);
var isOpera = (navigator.userAgent.toLowerCase().indexOf('opera ')+1 || navigator.userAgent.toLowerCase().indexOf('opera/')+1);
if (isOpera) isIE = false; // Opera (which is sneaky, pretending to be IE by default)
var screenX = null;
var screenY = null;
var scrollY = null;
var vRndX = null;
var vRndY = null;
function rnd(n,min) {
if (isNaN(min)) min = 0;
return (Math.random()*n)+min;
}
this.randomizeWind = function() {
vRndX = plusMinus(rnd(vMax,0.2));
vRndY = rnd(vMax,0.2);
if (this.flakes) {
for (var i=0; i<this.flakes.length; i++) {
if (this.flakes[i].active) this.flakes[i].setVelocities();
}
}
}
function plusMinus(n) {
return (parseInt(rnd(2))==1?n*-1:n);
}
this.resizeHandler = function() {
if (window.innerWidth || window.innerHeight) {
screenX = window.innerWidth-(!isIE?24:2);
screenY = (flakeBottom?flakeBottom:window.innerHeight);
} else {
screenX = (document.documentElement.clientWidth||document.body.clientWidth||document.body.scrollWidth)-(!isIE?8:0);
screenY = flakeBottom?flakeBottom:(document.documentElement.clientHeight||document.body.clientHeight||document.body.scrollHeight);
}
s.scrollHandler();
}
this.scrollHandler = function() {
// "attach" snowflakes to bottom of window if no absolute bottom value was given
scrollY = (flakeBottom?0:parseInt(window.scrollY||document.documentElement.scrollTop||document.body.scrollTop));
if (isNaN(scrollY)) scrollY = 0; // Netscape 6 scroll fix
if (!flakeBottom && s.flakes) {
for (var i=0; i<s.flakes.length; i++) {
if (s.flakes[i].active == 0) s.flakes[i].stick();
}
}
}
this.freeze = function() {
// pause animation
if (!s.disabled) {
s.disabled = 1;
} else {
return false;
}
if (!isWin9X) {
clearInterval(s.timers);
} else {
for (var i=0; i<s.timers.length; i++) {
clearInterval(s.timers[i]);
}
}
}
this.resume = function() {
if (s.disabled) {
s.disabled = 0;
} else {
return false;
}
s.timerInit();
}
this.stop = function() {
this.freeze();
for (var i=0; i<this.flakes.length; i++) {
this.flakes[i].o.style.display = 'none';
}
removeEventHandler(window,'scroll',this.scrollHandler,false);
removeEventHandler(window,'resize',this.resizeHandler,false);
}
this.SnowFlake = function(parent,type,x,y) {
var s = this;
var storm = parent;
this.type = type;
this.x = x||parseInt(rnd(screenX-12));
this.y = (!isNaN(y)?y:-12);
this.vX = null;
this.vY = null;
this.vAmpTypes = [2.0,1.0,1.25,1.0,1.5,1.75]; // "amplification" for vX/vY (based on flake size/type)
this.vAmp = this.vAmpTypes[this.type];
this.active = 1;
this.o = document.createElement('img');
this.o.style.position = 'absolute';
this.o.style.width = flakeWidth+'px';
this.o.style.height = flakeHeight+'px';
this.o.style.fontSize = '1px'; // so IE keeps proper size
this.o.style.zIndex = 2;
this.o.src = imagePath+this.type+(pngHandler.supported && usePNG?'.png':'.gif');
document.body.appendChild(this.o);
if (pngHandler.supported && usePNG) pngHandler.transform(this.o);
this.refresh = function() {
this.o.style.left = this.x+'px';
this.o.style.top = this.y+'px';
}
this.stick = function() {
s.o.style.top = (screenY+scrollY-flakeHeight-storm.terrain[Math.floor(this.x)])+'px';
// called after relative left has been called
}
this.vCheck = function() {
if (this.vX>=0 && this.vX<0.2) {
this.vX = 0.2;
} else if (this.vX<0 && this.vX>-0.2) {
this.vX = -0.2;
}
if (this.vY>=0 && this.vY<0.2) {
this.vY = 0.2;
}
}
this.move = function() {
this.x += this.vX;
this.y += (this.vY*this.vAmp);
this.refresh();
if (this.vX && screenX-this.x<flakeWidth+this.vX) { // X-axis scroll check
this.x = 0;
} else if (this.vX<0 && this.x<0-flakeWidth) {
this.x = screenX-flakeWidth; // flakeWidth;
}
var yDiff = screenY+scrollY-this.y-storm.terrain[Math.floor(this.x)];
if (yDiff<flakeHeight) {
this.active = 0;
if (snowCollect) {
var height = [0.75,1.5,0.75];
for (var i=0; i<2; i++) {
storm.terrain[Math.floor(this.x)+i+2] += height[i];
}
}
this.o.style.left = ((this.x-(!isIE?flakeWidth:0))/screenX*100)+'%'; // set "relative" left (change with resize)
if (!flakeBottom) {
this.stick();
}
}
}
this.animate = function() {
// main animation loop
// move, check status, die etc.
this.move();
}
this.setVelocities = function() {
this.vX = vRndX+rnd(vMax*0.12,0.1);
this.vY = vRndY+rnd(vMax*0.12,0.1);
}
this.recycle = function() {
this.setVelocities();
this.vCheck();
this.x = parseInt(rnd(screenX-flakeWidth-1));
this.y = parseInt(rnd(640)*-1)-flakeHeight;
this.active = 1;
}
this.recycle(); // set up x/y coords etc.
this.refresh();
}
this.snow = function() {
var active = 0;
var used = 0;
var waiting = 0;
for (var i=this.flakes.length-1; i>0; i--) {
if (this.flakes[i].active == 1) {
this.flakes[i].animate();
active++;
} else if (this.flakes[i].active == 0) {
used++;
} else {
waiting++;
}
}
if (snowCollect && !waiting) { // !active && !waiting
// create another batch of snow
this.createSnow(flakesMaxActive,true);
}
if (active<flakesMaxActive) {
with (this.flakes[parseInt(rnd(this.flakes.length))]) {
if (!snowCollect && active == 0) {
recycle();
} else if (active == -1) {
active = 1;
}
}
}
}
this.createSnow = function(limit,allowInactive) {
if (showStatus) window.status = 'Creating snow...';
for (var i=0; i<limit; i++) {
this.flakes[this.flakes.length] = new this.SnowFlake(this,parseInt(rnd(flakeTypes)));
if (allowInactive || i>flakesMaxActive) this.flakes[this.flakes.length-1].active = -1;
}
if (showStatus) window.status = '';
}
this.timerInit = function() {
this.timers = (!isWin9X?setInterval("snowStorm.snow()",20):[setInterval("snowStorm.snow()",75),setInterval("snowStorm.snow()",25)]);
}
this.init = function() {
for (var i=0; i<8192; i++) {
this.terrain[i] = 0;
}
this.randomizeWind();
this.createSnow(snowCollect?flakesMaxActive:flakesMaxActive*2); // create initial batch
addEventHandler(window,'resize',this.resizeHandler,false);
addEventHandler(window,'scroll',this.scrollHandler,false);
// addEventHandler(window,'scroll',this.resume,false); // scroll does not cause window focus. (odd)
// addEventHandler(window,'blur',this.freeze,false);
// addEventHandler(window,'focus',this.resume,false);
this.timerInit();
}
this.resizeHandler(); // get screen coordinates
if (screenX && screenY && !this.disabled) {
this.init();
}
}
function snowStormInit() {
setTimeout("snowStorm = new SnowStorm()",500);
}
// Generic addEventHandler() wrapper
// ---------------------------------
// A generic interface for adding DOM event handlers
// Version 1.2.20040404
//
// Code by Scott Schiller | schillmania.com
//
// Revision history:
// ---------------------------------
// v1.1.20031218: initial deploy
// v1.2.20040404: added post-load event check
var addEventHandler = null;
var removeEventHandler = null;
function postLoadEvent(eventType) {
// test for adding an event to the body (which has already loaded) - if so, fire immediately
return ((eventType.toLowerCase().indexOf('load')>=0) && document.body);
}
function addEventHandlerDOM(o,eventType,eventHandler,eventBubble) {
if (!postLoadEvent(eventType)) {
o.addEventListener(eventType,eventHandler,eventBubble);
} else {
eventHandler();
}
}
function removeEventHandlerDOM(o,eventType,eventHandler,eventBubble) {
o.removeEventListener(eventType,eventHandler,eventBubble);
}
function addEventHandlerIE(o,eventType,eventHandler) { // IE workaround
if (!eventType.indexOf('on')+1) eventType = 'on'+eventType;
if (!postLoadEvent(eventType)) {
o.attachEvent(eventType,eventHandler); // Note addition of "on" to event type
} else {
eventHandler();
}
}
function removeEventHandlerIE(o,eventType,eventHandler) {
if (!eventType.indexOf('on')+1) eventType = 'on'+eventType;
o.detachEvent(eventType,eventHandler);
}
function addEventHandlerOpera(o,eventType,eventHandler,eventBubble) {
if (!postLoadEvent(eventType)) {
(o==window?document:o).addEventListener(eventType,eventHandler,eventBubble);
} else {
eventHandler();
}
}
function removeEventHandlerOpera(o,eventType,eventHandler,eventBubble) {
(o==window?document:o).removeEventListener(eventType,eventHandler,eventBubble);
}
if (navigator.userAgent.toLowerCase().indexOf('opera ')+1 || navigator.userAgent.toLowerCase().indexOf('opera/')+1) {
// opera is dumb at times.
addEventHandler = addEventHandlerOpera;
removeEventHandler = removeEventHandlerOpera;
} else if (document.addEventListener) { // DOM event handler method
addEventHandler = addEventHandlerDOM;
removeEventHandler = removeEventHandlerDOM;
} else if (document.attachEvent) { // IE event handler method
addEventHandler = addEventHandlerIE;
removeEventHandler = removeEventHandlerIE;
} else { // Neither "DOM level 2" (?) methods supported
addEventHandler = function(o,eventType,eventHandler,eventBubble) {
o['on'+eventType] = eventHandler;
// Multiple events could be added here via array etc.
}
removeEventHandler = function(o,eventType,eventHandler,eventBubble) {}
}
// Safari 1.0 does not support window.scroll events - apparently netscape 6.0/6.2 and mozilla 1.4 also.
// Refer to events support table at http://www.quirksmode.org/js/events_compinfo.html
// -- end addEventHandler definition --
/*
PNGHandler: Object-Oriented Javascript-based PNG wrapper
--------------------------------------------------------
Version 1.2.20040803
Code by Scott Schiller - www.schillmania.com
--------------------------------------------------------
Description:
Provides gracefully-degrading PNG functionality where
PNG is supported natively or via filters (Damn you, IE!)
Should work with PNGs as images and DIV background images.
--------------------------------------------------------
Revision history
--------------------------------------------------------
1.2
- Added refresh() for changing PNG images under IE
- Class extension: "scale" causes PNG to scale under IE
--------------------------------------------------------
Known bugs
--------------------------------------------------------
- ie:mac doesn't support PNG background images.
- Safari doesn't support currentStyle() - can't parse BG
via CSS (ie. for a DIV with a PNG background by class)
*/
function PNGHandler() {
var self = this;
this.na = navigator.appName.toLowerCase();
this.nv = navigator.appVersion.toLowerCase();
this.isIE = this.na.indexOf('internet explorer')+1?1:0;
this.isWin = this.nv.indexOf('windows')+1?1:0;
this.isIEMac = (this.isIE&&!this.isWin);
this.isIEWin = (this.isIE&&this.isWin);
this.ver = this.isIE?parseFloat(this.nv.split('msie ')[1]):parseFloat(this.nv);
this.isMac = this.nv.indexOf('mac')+1?1:0;
this.isOpera = (navigator.userAgent.toLowerCase().indexOf('opera ')+1 || navigator.userAgent.toLowerCase().indexOf('opera/')+1);
if (this.isOpera) this.isIE = false; // Opera filter catch (which is sneaky, pretending to be IE by default)
this.filterID = 'DXImageTransform.Microsoft.AlphaImageLoader';
this.supported = false;
this.transform = self.doNothing;
this.filterMethod = function(o) {
// IE 5.5+ proprietary filter garbage (boo!)
// Create new element based on old one. Doesn't seem to render properly otherwise (due to filter?)
// use DOM "currentStyle" method, so rules inherited via CSS are picked up.
if (o.nodeName != 'IMG') {
var b = o.currentStyle.backgroundImage.toString(); // parse out background image URL
o.style.backgroundImage = 'none';
// Parse out background image URL from currentStyle.
var i1 = b.indexOf('url("')+5;
var newSrc = b.substr(i1,b.length-i1-2).replace('.gif','.png'); // find first instance of ") after (", chop from string
o.style.writingMode = 'lr-tb'; // Has to be applied so filter "has layout" and is displayed. Seriously. Refer to http://msdn.microsoft.com/workshop/author/filter/reference/filters/alphaimageloader.asp?frame=true
o.style.filter = "progid:"+self.filterID+"(src='"+newSrc+"',sizingMethod='"+(o.className.indexOf('scale')+1?'scale':'crop')+"')";
} else if (o.nodeName == 'IMG') {
var newSrc = o.getAttribute('src').replace('.gif','.png');
// apply filter
o.src = 'image/none.gif'; // get rid of image
o.style.filter = "progid:"+self.filterID+"(src='"+newSrc+"',sizingMethod="+(o.className.indexOf('scale')+1?'scale':'crop')+"')";
o.style.writingMode = 'lr-tb'; // Has to be applied so filter "has layout" and is displayed. Seriously. Refer to http://msdn.microsoft.com/workshop/author/filter/reference/filters/alphaimageloader.asp?frame=true
}
}
this.pngMethod = function(o) {
// Native transparency support. Easy to implement. (woo!)
bgImage = this.getBackgroundImage(o);
if (bgImage) {
// set background image, replacing .gif
o.style.backgroundImage = 'url('+bgImage.replace('.gif','.png')+')';
} else if (o.nodeName == 'IMG') {
o.src = o.src.replace('.gif','.png');
} else if (!bgImage) {
// no background image
}
}
this.getBackgroundImage = function(o) {
var b, i1; // background-related variables
var bgUrl = null;
if (o.nodeName != 'IMG' && !(this.isIE && this.isMac)) { // ie:mac PNG support broken for DIVs with PNG backgrounds
if (document.defaultView) {
if (document.defaultView.getComputedStyle) {
b = document.defaultView.getComputedStyle(o,'').getPropertyValue('background-image');
i1 = b.indexOf('url(')+4;
bgUrl = b.substr(i1,b.length-i1-1);
} else {
// no computed style
return false;
}
} else {
// no default view
return false;
}
}
return bgUrl;
}
this.doNothing = function() {}
this.supportTest = function() {
// Determine method to use.
// IE 5.5+/win32: filter
if (this.isIE && this.isWin && this.ver >= 5.5) {
// IE proprietary filter method (via DXFilter)
self.transform = self.filterMethod;
} else if (!this.isIE && this.ver < 5) {
// No PNG support or broken support
// Leave existing content as-is
self.transform = null;
return false;
} else if (!this.isIE && this.ver >= 5 || (this.isIE && this.isMac && this.ver >= 5)) { // version 5+ browser (not IE), or IE:mac 5+
self.transform = self.pngMethod;
} else {
// Presumably no PNG support. GIF used instead.
self.transform = null;
return false;
}
return true;
}
this.init = function() {
this.supported = this.supportTest();
}
}
function getElementsByClassName(className,oParent) {
var doc = (oParent||document);
var matches = [];
var nodes = doc.all||doc.getElementsByTagName('*');
for (var i=0; i<nodes.length; i++) {
if (nodes[i].className == className || nodes[i].className.indexOf(className)+1 || nodes[i].className.indexOf(className+' ')+1 || nodes[i].className.indexOf(' '+className)+1) {
matches[matches.length] = nodes[i];
}
}
return matches; // kids, don't play with fire. ;)
}
// Instantiate and initialize PNG Handler
var pngHandler = new PNGHandler();
pngHandler.init();
addEventHandler(window,'load',snowStormInit,false);
</script>
Kodu bu siteden aldım: http://siteneeklekodlari.blogspot.com/2011/12/sayfa-altnda-biriken-kar-kodu.html