Emeğin Gücü, Emekçinin Yanındayız...
TEKGIDA-İŞ SENDİKASI
TEKGIDA-İŞ SENDİKASI
ATAKEY
FELDA IFFCO
PERFETTİ VAN MELLE
KRAFT HEİNZ
SAFE SPİCE
SAGRA
İZTARIM
DOĞANAY
KESKİNOĞLU
BARRY CALLEBAUT
BEL KARPER
Cargill
Doğadan
Tarım Kredi Birlik
Bolez Piliç
Badem Su
İzmir Su
Elmacık Atasu
Sek_Süt
Yudum_Yag
ORYANTAL TÜTÜN PAKETLEME
Olin_Yag
NuhunAnkaraMakarnasi
Nestle_Su
Pinar
Savola
Pepsi
Tuborg_Bira
Nestle cereals
Yepaş Ekmek
Yesaş
Mey
Nestle
Mauri_Maya
Lipton_Dosan
Mondelez
TtlTutun
TrakyaBirlik
Tat
Tamek
Sırma Su
Sunel
KristalYag
Knorr_Besan
Kent_Cadbury
Efes
ELİT Cikolata
Erikli_Su
Eti
Evyap
Ferrero
Filiz Makarna
Timtas
Kavaklıdere
ibb kent ekmek
Hayat Su
Haribo
Frito Lay
BAT
Barilla_Makarna
Banvit
Aroma
Ankara Fırınları
Akmina
Alpin Su
Bimbo QSR
Bolca Mantı
BUNGE YAĞ
Chipita Gıda Üretim A.Ş.
Coca Cola
Damla Su
Danone
Dr Oetker
Agthia
ATAKEY
FELDA IFFCO
PERFETTİ VAN MELLE
KRAFT HEİNZ
SAFE SPİCE
SAGRA
İZTARIM
DOĞANAY
KESKİNOĞLU
BARRY CALLEBAUT
BEL KARPER
Cargill
Doğadan
Tarım Kredi Birlik
Bolez Piliç
Badem Su
İzmir Su
Elmacık Atasu
Sek_Süt
Yudum_Yag
ORYANTAL TÜTÜN PAKETLEME
Olin_Yag
NuhunAnkaraMakarnasi
Nestle_Su
Pinar
Savola
Pepsi
Tuborg_Bira
Nestle cereals
Yepaş Ekmek
Yesaş
Mey
Nestle
Mauri_Maya
Lipton_Dosan
Mondelez
TtlTutun
TrakyaBirlik
Tat
Tamek
Sırma Su
Sunel
KristalYag
Knorr_Besan
Kent_Cadbury
Efes
ELİT Cikolata
Erikli_Su
Eti
Evyap
Ferrero
Filiz Makarna
Timtas
Kavaklıdere
ibb kent ekmek
Hayat Su
Haribo
Frito Lay
BAT
Barilla_Makarna
Banvit
Aroma
Ankara Fırınları
Akmina
Alpin Su
Bimbo QSR
Bolca Mantı
BUNGE YAĞ
Chipita Gıda Üretim A.Ş.
Coca Cola
Damla Su
Danone
Dr Oetker
Agthia
12 Ekim 2011
ÇALIŞIRKEN İŞSİZ KALMAKTAN DAHA BÜYÜK BİR KRİZ OLMAZ

Birgün Gazetesi Yazı Dizisi – 7 –

ÇALIŞIRKEN İŞSİZ KALMAKTAN DAHA BÜYÜK BİR KRİZ OLMAZ

Türkiye’deki işsizlik rakamları ne kadar saklansa da gerçekleri gizleyemediğini belirten Prof. Dr. Aziz Konukman, "Krize tüm makro büyüklükler açısından bakarsak ‘teğet geçiyor’ yorumu çok anlamsızdır. Örneğin ülkedeki işgücü verilerinin perde arkasındaki gerçeklerine baktığımızda orada bu durum çok somut bir şekilde beliriyor" diyor.

YARIN "Cari ücret düzeyinde iş aramaktan vazgeçenler veya cesareti kırılmış olarak adlandırılan emekçiler bu hesaba göre işsiz sayılmıyor. Aslına baktığınızda hepsi birer işsizdir" Bizde, diğer dünya ülkelerinde de benzer bir eğilim olmak üzere ‘istihdamsız’ bir büyüme süreci hâkimdir. Yanhz ülkemizde bu biraz daha fazla hissediliyor"

       Türkiye’de ve dünyada kriz sürecini irdelediğimiz yazı dizimizde bu kez sözü Gazi Üniversitesi İlctisadi ve İdari Bilimler Fakültesi Prof. Dr Aziz Konukman’a bıraktık. Kriz sürednde yaratılan "suni baharı", istihdamsız bir büyüme sürecindeki örgütlenme ihtiyacı üzerine konuştuk. Söz bu kez Prof. Dr Aziz Konukman’da…

Küresel krizi yaşadığımız şu günlerde Türkiye’de bir "bahar havasının" sözcülüğünü yapan ve adeta bir "teğet geçti" akımı yaratan bir grup var. Yaratılan bu ‘suni’ mevcut durumu nasıl yorumluyorsunuz?

       Hatırlanırsa 2001 krizini finansal bir kriz niteliğinde yaşamıştık. Yurttaş bizde krizi şöyle algılıyor, sabah kalkıp bankaya gittiğinde parasını çekemiyorsa, evet kriz var diyor. Şu şekilde ne yazık ki algılanmıyor, sabah işyerine gitti ve işte malûm kartın; turnikeden geçirecek, eğer geçiremiyorsa asıl kriz ordadır. Fakat bizde kriz, birinci durum oluştuğunda daha çok algılanır. Yani sokaktaki yurttaşın algıladığı kriz finansal krizdir; parasını bankadan çekememesi ve fazinin ödenmemesi gibi. Çünkü bugüne kadar yaşadığı kriz algısı aslında odur. Reel sektör krizi ise genelde emekçi kesimlerin daha çok hissettiği bir kriz biçimidir. Kamu çalışanlarının da görece daha güvenceli olduğunu düşünürsek, geri kalan yurttaşlarımıza krizin batıdaki gibi anlatılması tarihsel deneyimlerden dolayı çok zordur. Oysa şu an yaşadığımız kriz bizatihi reel bir krizdir. Çünkü, bir insanın çalışırken işsiz kalması durumundan daha anlamlı bir kriz olabilir mi? Bu sayı 70 milyon nüfus içinde görece düşük bir sayı olduğu için, geri kalan nallan bunu anlayamamasını anlayabiliriz ama bu-bir krizdir. Krize tüm makro büyüklükler açısından bakarsak "teğet geçiyor" yorumu çok anlamsızdır. Örneğin işgücü verilerinin perde arkasındaki gerçeklerine baktığımızda orada bu durum çok somut bir şekilde belirmektedir. Reel ücretlerin düşmesi, sosyal güvencenin azaltılması ve işsizliğin artması gibi veriler incelendiğinde kriz sürecindeki maliyederin kimler tarafından üstlenildiği apaçıktır. Dolayısı ile başta hükümetin, sonrasında da sermaye çevrelerinin ‘teğet geçecek’ veya ‘geçiyor’ tarifini kabullenmek mümkün değildir. Nitekim bu yeni krizde Başbakan’ın dışında artık kimse bu söylemi sürdürmemeye başladı. Hükümetin kendi içinde de artık kriz algılamaları başladı, hatta bu kapsamda toplumu krize hazırladıklarını bile söyleyebiliriz. Kıdem tazminatının kaldırılması, onun yerine bir fon oluşturulmasının anlamı sizce ne olabilir? Bu şu demek: "Sizin en önemli haklarınızdan birini elinizden alacağız." Velhasıl, şunu söylemek kaçınılmaz olmuştur, kriz bizi vurdu, vurmaya da devam edecek.

Sokakta krizin yaşandığını gözlemliyoruz, fakat resmi açıklanan rakamlar adeta her şeyin iyi gittiğini söylüyor. Reel hayattan kopuk bir "resmi" rakam mı var?

       Genelde şurada bir yanılgı doğuyor, öncelikle onu düzeltelim; doğru veriler aslında bize geliyor yani TÜİK aslında bize/kullanmasını bilene doğru verileri de veriyor. Fakat ideolojik olarak piyasaların işine gelen, sistemin meşrulaştıracağı veriler kullanılıyor. Sisteme muhalif olarak bize sunulan tablonun gerçeği yansıtmadığını söyletecek veriyi de aslında yine TÜİK sağlıyor. Resmi işsizlik rakamlarına baktığımızda, kabaca bir hesap ile gerçek rakamların genelde bu rakamların iki katı gerçekleştiğini görüyoruz. Unutmayalım ki güneş balçık ile sıvanmaz, hesap dışı bırakılan veriler ile sunulan resmi rakamlar gerçek hayattaki işsizliği örtmemektedir. Örneğin cari ücret düzeyinde iş aramaktan vazgeçenler veya cesareti kırılmış olarak adlandırılan emekçiler bu hesaba göre işsiz sayılmıyor. Aslına baktığınızda hepsi birer işsizdir. Bunları da yine TÜİK söylüyor aslında, fakat resmi rakamların içine katmıyor. İşsiz olarak tanımladığı ise, "herhangi bir cari ücret düzeyinde ve çalışma koşullarında iş arayıp da bulamayan nüfus" durumudur. Şimdi o cesareti kırılan işçiler iş aramıyor mu? Sözün kısası, gerek TÜİK ve hatta hükümetin norm olarak kabul ettiği ILO hesaplamalarına göre yaklaşık 2 milyon kişinin işsiz olduğu halde işsiz sayılmadığı sorunu ile karşı karşıya kalıyoruz. Başka bir örnek, mevsimlik işçi diye tabir ettiğimiz kısa süreli çalıştırılan işçilerde işsiz sayılmamakta. Burada aslında yıl boyunca çalışmak isteyen işçileri siz sadece bazı dönemler istihdam edebiliyorsunuz, ama baktığımızda yılın diğer günleri bu nüfus işsiz. Fakat yine resmi rakamlarda işsiz olarak tanımlanmamakta. Bir de eksik istihdam diye tabir ettiğimiz, niteliğinden daha düşük nitelikte bir işte çalışmak zorunda kalan kesim var. Bu kesimin içine örneğin üniversiteden mezun fakat iş olmadığı için tezgâhtarlık yapmak zorunda kalan emekçiler gibi bir nüfus giriyor. Burada da yoksulluk tehdidi ile karşı karşıya kalan nitelikli işçiyi niteliğine ve yeteneğine uygun istihdam edememe durumu mevcut. Dolayısı ile tüm bunları üst üste koyduğumuzda gerçek işsizliğin, bize sunulan işsizlik oranlarının iki katına çıktığını görüyoruz. 

 Biraz da büyümeden bahsedelim. Sizce böylesi "çılgın" büyüme oranlarının varlığında böylesi bir istihdam sorunu nasıl ortaya çıkıyor?

       Bizde diğer dünya ülkelerinde de benzer bir eğilim olmak üzere "istihdamsız" bir büyüme süreci hâkimdir. Ülkemizde bu biraz daha fazla hissedilir, çünkü özellikle gelişmiş ülkelerde teknoloji ve innovasyon sürecindeki ilerleme daha çok emekten tasarruf olanağı sağladığı için istihdam yaratamazken, bizdeki durum sıcak paraya bağlı büyümenin getirdiği bir sorunun varlığıdır. Örneğin uzun yıllardır döviz kuru olması gerekenin altında tutulup, TL aşırı değerli bir seviyede kaldı. Bu nedenle nisbi olarak ucuzlayan ithal girdiler üretimde daha tercih edilir oldu. Bir kısım ara malın zaten Türkiye’de üretilememesi gibi bir durumda var, bunu da 24 Ocak 1980’de alınan kararlar sürecinde ara ve yatırım mallarında ithal ikameci sanayileşme sürecini tamamlayamadan girmesi ie açıklayabiliriz. Dolayısı ile Güney Kore ya da Latin Amerika’daki bazı ülkeler gibi bu süreci tamamlamış bir ülke olmadığı için, hâlâ ara malında ithal malın yerine ikame edebileceği bir yerli ürünler grubu bulunmaktadır. Somutlaştıralım, dahilde işleme rejimi kapsamında birçok mal dışarıda işleniyor, belli bir işlemden geçtikten sonra gümrüksüz ithal ediliyor. Böylece ihracat rakamlarına bakıldığında ara malı ithalatını da göz önünde tuttuğumuzda örneğin 100 liralık bir ihracatın 60 lirasının ithalata gittiği durumu önümüze çıkıyor. Sonuçta böylesi bir üretim yapısında, herhangi bir kriz anında bu ithalat oranları ile üretim yapan sektörler bir anda maliyetlerini kesmek zorunda kalıyorlar buna da ilk işten çıkarmalardan başlıyorlar.

       Yani genel olarak tarif edebileceğimiz üzere büyümenin kendi oranına uygun bir istihdam artışı yaratmayacağı bir yapı ile karşı karşıya kalıyoruz.

       Bu istihdamsız büyüme yapısında, gerçek işsizlik rakamlarınında resmi rakamların çok üzerinde olduğunu söyledik. Türkiye İşveren Sendikaları da bunu her fırsatta ifade ediyor. Sizce TİSK bu işi çözmeye mi çalışıyor?

       Tam tersi, işsizlik aslında kapitalizmin içinde olan bir olgudur. Yani kapitalizm var olduğu sürece eşitsiz gelişme olacak. Ve iki şey var ki her zaman Demokles’in Kılıcı gibi emekçilerin üzerinde duracak. Bunu biz şimdi söylemiyoruz, Marx yıllar önce bunu söylemiştir. Bunlardan biri yedek işgücü ordusu, ikincisi ise yoksulluk. Örneğin kayıtdışı ekonomilerde merdiven altı üretimler niye vardır? Asgari ücretin altında, yoksulluk tehdidi altında olan insanlar çalışabilsin diye. Dolayısı ile yoksulluk ve işsizlik bu sistemin olmazsa olmaz unsurlarıdır. Kapitalist sistemde bunları yönetirsiniz, yok etmezsiniz. Bakınız, Post Fordizm go’lı yıllarda krize girdiği zaman Washington Mutabakatı ile bir deregülasyon yani kuralsızlaştırma sürecine girildi. Bu süreçte birçok krize tanık olduk; 1994 Meksika krizi, arkasından Asya krizi ve Rusya krizi en sonunda da Brezilya krizi gibi bir dizi kriz ortaya çıktı. Sonunda kapitalist sistem ne yaptı? Yeni bir uzlaşma arayışı na girip Post Washington uzlaşmasını yarattı, yan "kuralsızlaştırma devam etsin fakat krize mahal ve recek etmenleri yok etmek için kontrolü de sağlaya hm" arayışına girdi. Bunun için düzenleyici kurumsal yapılar oluşturuldu ve böylece siyasal iktidarların oy uğruna başvurdukları iktisat politikalarınır popülizme varmasının da önü kısmen kesilmiş oldu. Sonuçta TİSK’in bu durumunu da bu doğrultuda değerlendirmek gerekmektedir. Bu sistem içinde yoksulluğun yönetilmesi kapitalizm için elzemdir. Aslında şöyle de bakabiliriz. Sistemin kend içinde yoksulluk ile mücadelesi esasen sermayey, korumak içindir. Sosyal adaletsizliğin yarattığı uçurumların kaosa dönüşmesini engelleyen emniyel sübaplarıdırlar. Dolayısı ile TİSK’in varoluş nedenini de buna bağlayabiliriz. Kapitalizmin emniyet sübaplığını yapmaktadır. 

 5. Çözüm yoluna gelirsek, bu sömürü dozunun gittikçe arttıı abildiği bir yapıda Türkiye’de ve dünya genelindeki emek örgütlenmelerinin nasıl biı yol izlemesi gerekmektedir?

       Burada emek cephesi tarafında şöyle bir sorun var. Günümüzde emek örgütleri hâlâ eski sermaye birikiminin muhalif örgütleri konumunda. İkinci dünya savaşından sonra keynesyen politikaların etkisi ile bir fordist sermaye birikim modeli görüyoruz, yani kitlesel tüketim için kitlesel üretim modeli dediğimiz, tipik istihdam biçimlerinin olduğu, sendikalaşmanın önünün açıldığı ve görece daha yüksek ücretlerin olduğu bir model. Tabii burada-efe/ctif talebi canlı tutabilmek, için reel ücretler sistemin birikim modeli ile uyumlu bir yapıda. Bir de tabii o dönem Sovyet reel sosyalizminin Demokles’in Kılıcı gibi sistemde durmasının da rolünü gözlemliyoruz. O dönemde şöyle bir düşünce hâkim: "Vahşi kapitalizmi kısmen sosyalleştirirsek emekçilerin de alternatif arayışlara girmesinin önünü keser, sistemin de kendini yeniden üretmesinin önünü açarız". Bu eğilimi şuna benzetiyorum, bir dönem Ankara valisi Nevzat Tandoğan "bu ülkeye komünizm gelecekse onu da biz getiririz" demişti. Aynı durum burada da mevcut, o dönemde yeni bir düzenin işçiler tarafından taşıyıcılığının yaratılması yerine sermayenin kendisinin bazı unsurların sağlayıcısı olması, sistemin kendi içinde devamlılığını sağlayacaktır. Tabii böylesine bir ortamın varlığı, o dönem örgütlenmeyi de kolaylaştırmıştır. Dolayısı ile sendikal tabanın çok güçlü olduğu bir dönemdi o yıllar. Şimdi ise parçalanmış üretim yapısı, taşeronlaşma gibi yeni çalışma biçimleri, hizmet sektörünün ağırlık kazanması ile tipik olmayan bir işçi sınıfının ortaya çıkması gibi yeni düzen oluşumları emekçilerin birlikte hareket etmesini engellemiştir. Sonuçta yeni birikim modeli ile sendikal harekederin gittikçe güç kaybına uğradığını ve aslında gittikçe de içine kapanık halde ulusal sınırlara hapsedildiğini görüyoruz. Artık enternasyonalizm diye kavramların bu kolektif yapılanmada yerinin kalmadığına şahit oluyoruz. Ama şunu görmemiz gerekiyor, Türkiye’de işçinin tek başına yapacağı mücadele çok sınırlıdır, örneğin bir Fransız işçisine bu mücadelede ihtiyaç vardır. Daha henüz, bu yeni tipik olmayan işçi tanımına uygun örgütlenme modeli bulunmamaktadır. Hâlâ o standart istihdam biçimine göre şekillendirilmiş yapılar duruyor. Yeni arayışlar da var, örneğin Latin Amerika’da emekli kesimi örgüüeyen sendikalar çıktı, keza DİSK de burada bir örneğini oluşturmaya çalıştı (her ne kadar yasal kısıtlamalar ile karşılaşsa da), sonrasında işsizler hareketi ve toplumsal sendikal muhalefet deneyimleri de ortaya çıktı. Bu yapılara baktığımızda daha çok işçiyi bürokratlaştıran, adeta devletin bir dairesi gibi çalışan kurumlar görüyoruz. Bizde de benzer süreçler oldu, 89 baharı eylemi ile bu yapıların zorlandığı, TEKEL direnişi ile bu yapıların masaya yatırıldığı bir süreci gördük. Söyleyelim, bu yapılar devam ederse, bu rüzgârın önünde durmak pek de mümkün gözükmüyor. TEKEL direnişinde başlatılan bu sorgulama sürecinin devam etmesi vevbu eğilimlerin ortadan kalkması şart. Bu mücadele ancak böyle etkin bir hal alır.
?/////////// SEARCH ///////////
var g_aEng;
var g_loc;

// Initialize namespace, use existing context
var searchshield = searchshield || {};

searchshield.clockUrl;

// constants
searchshield.SCORE_SS_SAFE = 1;
searchshield.SCORE_SS_CAUTION = 2;
searchshield.SCORE_SS_WARNING = 3;
searchshield.SCORE_SS_BLOCK = 4;
searchshield.SCORE_SS_VERISIGN = 7;

searchshield.BLOCK_NONE = 0;
searchshield.BLOCK_NORMAL = 1;
searchshield.BLOCK_PHISH = 2;
searchshield.BLOCK_YAHOO = 3;

searchshield.XPLCHECK_RESULT_SEV_NONE = 0;
searchshield.XPLCHECK_RESULT_SEV_LOW = 1;
searchshield.XPLCHECK_RESULT_SEV_MED = 2;
searchshield.XPLCHECK_RESULT_SEV_BLOCK = 3;

searchshield.VERISIGN_SPLIT_NOTEST = 0;
searchshield.VERISIGN_SPLIT_TESTA = 1;
searchshield.VERISIGN_SPLIT_TESTB = 2;

searchshield.needLivePhishCheck = false;
searchshield.allowedSites = [];
searchshield.enabled = function (doc)
{
var result = searchshield.avgCallFunc(doc, ‘GetSearchEnabled’);
return (result == ‘1’ ? 1 : 0);
};
searchshield.init = function (doc)
{
if ((doc == null) || (doc.location == null) || (doc.location.href.search(/about:/) != -1))
return;

if (!searchshield.enabled(doc))
return;

if (!g_aEng)
g_aEng = searchshield.Search.prototype.detectEngine(doc.location.href);

if (!g_aEng)
return;

// init search object (not declared or is null)
if (typeof xplSearch === ‘undefined’)
{
// global
xplSearch = new searchshield.Search();

// reset the links added flag
xplSearch.new_links = false;

xplSearch.doc = doc;
xplSearch.href = xplSearch.doc.location.href;
xplSearch.uri = searchshield.parseLink(xplSearch.href);

xplSearch.engine = new searchshield[g_aEng ‘SearchEngine’](xplSearch)
xplSearch.addEngine(xplSearch.engine);

searchshield.launch(doc);
}

if (doc.location.href != g_loc)
{
g_loc = doc.location.href;
if ((typeof xplSearch !== ‘undefined’) && (xplSearch != null))
searchshield.launch(doc);
}
};
searchshield.launch = function (doc)
{
// IE specific check
searchshield.quirksMode = (self.top.document.compatMode == ‘BackCompat’);
searchshield.docMode = parseInt(navigator.userAgent.split(‘MSIE’)[1]);

if ((self === top) && (self.document === doc))
{
if (!xplSearch.engine)
return;

// set verdict display config
xplSearch.engine.setRatingsConfig(doc);

// init the alert popup
searchshield.initPopupAlert(doc);

if (xplSearch.engine.type != ‘inline’)
{
// save function reference for memory clean up later
var fn = function(event){avglsflyover.hide(null)};

//hide flyover if these events occur
window.detachEvent(‘onscroll’, fn);
window.attachEvent(‘onscroll’, fn);

doc.detachEvent(‘onkeydown’, fn);
doc.attachEvent(‘onkeydown’, fn);
}

// only start monitor on top doc
searchshield.avgPageMonitor.start(doc);
}

return;
};

// search monitors and processors – doc is always top most document
searchshield.avgPageMonitor = {
previousUrl: null,
start: function(doc){
searchshield.avgPageMonitor.stop();
searchshield.avgPageMonitor.process(doc);
searchshield.avgPageMonitor.timeoutID = window.setTimeout(function(){searchshield.avgPageMonitor.start(doc)}, 1000);
},
process: function(doc){
var currentUrl = doc.location.href;
var refresh = 0;
if (this.previousUrl != currentUrl) {
this.previousUrl = currentUrl;
avgreport.scanResult(doc, currentUrl);
refresh = (xplSearch.engine.name == ‘google’) ? 1 : 0;
}
searchshield.avgProcessSearch(doc, refresh);
},
stop: function(){
if (searchshield.avgPageMonitor.timeoutID)
{
window.clearTimeout(searchshield.avgPageMonitor.timeoutID);
delete searchshield.avgPageMonitor.timeoutID;
}
}
};

searchshield.avgProcessSearch = function (doc, refresh)
{
// doc may be about:Tabs or about:Blank
if (!doc)
return;

if (!searchshield.enabled(doc))
return;

if (!searchshield.clockUrl)
searchshield.clockUrl = searchshield.avgCallFunc(doc, ‘GetIconUrl’, ‘0’);

xplSearch.clockUrl = searchshield.clockUrl

if (!xplSearch.engine)
return;

// get result links
xplSearch.links = [];
var links = searchshield.avgGetSearchLinks(doc, xplSearch.engine, refresh);

searchshield.needLivePhishCheck = false;
for (var i=0; i 0 && xplSearch.engine.type != ‘inline’)
{
searchshield.avgCallFunc(doc, ‘FinalScanComplete’);
}

// attach click handlers for popup alerts
doc.body.detachEvent(“onclick”, searchshield.blockClick);
doc.body.attachEvent(“onclick”, searchshield.blockClick);

doc.body.detachEvent(“ondblclick”, searchshield.blockClick);
doc.body.attachEvent(“ondblclick”, searchshield.blockClick);
};
searchshield.avgGetSearchLinks = function (doc, engine, refresh)
{
if (!doc.body)
return;

var alltags = doc.body.getElementsByTagName(‘a’);
for (var i = 0; i < alltags.length; i )
{
if ( !refresh )
{ // no checked test if refreshing – google
if (alltags[i].getAttribute('avglschecked'))
continue;
}

// mark search result anchor so it isn't processed repeatedly
alltags[i].setAttribute('avglschecked', '1');

// ignore linked resources
if (alltags[i].tagName == 'LINK')
continue;

// ignore in-page bookmarks and javascript
if ((!alltags[i].href) ||
(alltags[i].href.charAt(0) == '#') || // in-page bookmark
(alltags[i].href.indexOf("javascript") == 0))
continue;

// ignore verdicts
if (/XPLSS_/.test(alltags[i].id))
continue;

// ignore flyover anchors
if (/avgthreatlabs/.test(alltags[i].host))
continue;

var href = engine.includeLink(alltags[i]);
if (!href)
continue;

var newNode = engine.search.addLink(alltags[i], href);
engine.addImage(newNode, engine.search.clockUrl, false);
}

// recursivesly process all frames
var docFrames = doc.frames;
if (docFrames && engine.processFrames)
{
for (var j = 0; j < docFrames.length; j )
{
var attr;
var frameDoc;
try {
attr = docFrames[j].frameElement.className;
frameDoc = docFrames[j].document;
}
catch(err){}

//TODO: make frame processing an engine function or at least make exclusions an engine property
// 'editable' frame it's probably a gmail reply
if (attr && (attr.indexOf("editable") != -1))
continue;

if (frameDoc)
searchshield.avgGetSearchLinks(frameDoc, engine, 0);
}
}

return engine.search.links;
};
searchshield.avglsCheckandUpdate = function (linkNode)
{
if (!xplSearch)
return;

// element is the search result anchor
var element = linkNode.element;
var href = linkNode.href;

var result = searchshield.avgCallFunc(xplSearch.doc, 'CheckSite', href, element.href);
if (result == null)
return;

var resultParse = result.split('::');

var phishing = resultParse[0]; // if phishing then rest of array does not exist.

if (phishing == 1)
return true;

if (resultParse.length -1) ? avglschecked.substring(0, sPos) : null;
var split = (sPos > -1) ? avglschecked.substring(sPos 1) : null;
if (hash && split && split != searchshield.VERISIGN_SPLIT_NOTEST)
{
// check updated verdict anchor for verisign domain
var d = event.srcElement.ownerDocument;
if (d.getElementById(“LXPLSS_” hash “U” searchshield.SCORE_SS_VERISIGN))
{
searchshield.avgCallFunc(d, “RecordVSClick”, hash, d.location.href);
}
}
}

var link = anchor.href;
var verdict = searchshield.getAvgImage(anchor);
var score = -1;
var img_id = ”;
if (verdict != null)
{
score = verdict.score;
img_id = verdict.rawId;
}

// show popup alert (upper left)
if ((score >= searchshield.SCORE_SS_CAUTION) && (score <= searchshield.SCORE_SS_WARNING))
{
// prevent this click from going any further
var search_hash = searchshield.avgCallFunc(document, 'GetHash', document.location.href);
searchshield.ShowPopupAlert(document, link, img_id, search_hash);

// if possible, stop the event from going any further
searchshield.cancelEvent(event);
return false;
}

return true;
};

// called by native to update phishing links
searchshield.updatePhishingLinks = function (results)
{

if (!results)
return;

if (!xplSearch)
return;

var engine = xplSearch.engine;
var resultParse = results.split("::");
var resultsLength = resultParse[0];

for (var i=0; i < resultsLength; i )
{
var idx = i*7;
var hash = resultParse[idx 1];
var score = resultParse[idx 2];
var new_image = resultParse[idx 3];
var alt_image = resultParse[idx 4];
var flyover = resultParse[idx 5];
var click_thru= resultParse[idx 6];
var altClick_thru = resultParse[idx 7];

engine.updateImage(hash, xplSearch.searchHash, score, new_image, alt_image, flyover, click_thru, altClick_thru);
}
};
searchshield.getAvgImage = function (element)
{
var obj = {};
obj.img = xplSearch.engine.getImgElement(element);
obj.score = -1;

//parse the score from the id
if (obj.img != null && obj.img.id)
{
var pos = !!obj.img.id ? obj.img.id.indexOf('U') 1 : -1;
obj.score = (pos < 1) ? -1 : obj.img.id.charAt(pos);
obj.rawId = obj.img.id.substring(0,pos-1);
}

return obj;
};
searchshield.GetScannedLink = function (link)
{
if (!xplSearch || !(xplSearch.links instanceof Array))
return link;

// look for the link we scanned based on original element
for (var i = 0; i < xplSearch.links.length; i )
{
if (xplSearch.links[i].element.href == link)
return xplSearch.links[i].href;
}
// else return the incoming link
return link;
};
searchshield.previouslyScanned = function (links, hash)
{
for (var i = 0; i < links.length; i )
{
if ((links[i] != null) && (links[i].hash != null) &&
(links[i].hash == hash) && (links[i].checked == true))
return true;
}
return false;
};
searchshield.initPopupAlert = function (doc)
{
// check if it exists first
if (doc.getElementById("XPLSS_PopupAlert"))
return;

// create a div to use for the popup itself, hide for now
var popup_div = doc.createElement("DIV");
popup_div.setAttribute("id", "XPLSS_PopupAlert");
popup_div.style.position = "absolute";
popup_div.style.zIndex = "10000";
doc.body.appendChild(popup_div);
};
searchshield.initFlyover = function (doc, engine)
{
// create in top doc only
if (doc !== window.top.document)
doc = window.top.document;

// check if it exists first
if ((doc == null) || (doc.getElementById("XPLSS_Flyover")))
return;

// create a div to use for the flyover itself, hide for now
var flyover_div = doc.createElement("DIV");
flyover_div.setAttribute("id", "XPLSS_Flyover");
flyover_div.style.position = "absolute";
flyover_div.style.zIndex = "10000";
doc.body.appendChild(flyover_div);

// create a layer for the image
var trans_div = doc.createElement("DIV");
trans_div.setAttribute("id", "XPLSS_Trans");
trans_div.style.position = "absolute";
trans_div.style.zIndex = "9999";
doc.body.appendChild(trans_div);
};
searchshield.ShowPopupAlert = function (doc, link, hash, search)
{
// build the content
var popup_content = searchshield.avgCallFunc(doc, 'BuildPopupAlert', hash, search);
if (popup_content == null || popup_content == "")
return;

// get the div
var div = doc.getElementById("XPLSS_PopupAlert");
div.innerHTML = searchshield.CleanupHTML(popup_content);

// set position, account for scrolling
var zoom = searchshield.zoomLevel();
var pageOffsetX = Math.round(doc.documentElement.scrollLeft/zoom);
var pageOffsetY = Math.round(doc.documentElement.scrollTop/zoom);

div.style.left = 10 pageOffsetX "px";
div.style.top = 10 pageOffsetY "px";

// TODO: the event handler function doesn't exist so, is this even necessary?
//div.attachEvent("onmouseout", HidePopupAlert);

// set the link
//var data = doc.getElementById("avgalertpopurl");
//if (data)
// data.innerHTML = escape(link);

// set visibility
div.style.visibility = "visible";

//navigate to the link after timed delay
// TODO: Bug 31707 – make this open a new tab/window
setTimeout(function(){doc.location.assign(link)}, 3000);
};
searchshield.avgCallFunc = function (doc, name /*, param1…, paramN*/)
{
// get the data element
var avg_ls_data = (typeof gAvgDataElement !== 'undefined') ? gAvgDataElement : doc.getElementById("avglsdata");

if ((avg_ls_data == null) || (name == null))
return;

// save the data element
gAvgDataElement = avg_ls_data;

// for some reason you can't fire and event on an element with no parent node
if (avg_ls_data.parentNode == null)
return;

// set the attributes
avg_ls_data.setAttribute("function", name);

// set variable length of optional parameter attributes
var pcnt = 0;
for (var i=2; i < arguments.length; i )
avg_ls_data.setAttribute("param" ( pcnt), String(arguments[i]));

avg_ls_data.fireEvent("onrowenter");

// get the result
return avg_ls_data.getAttribute("result");
};

// general use functions – begin
// DOM Functions
searchshield.getAnchorNode = function (node, filterFunc)
{
// filterFunc should return a boolean
if (!filterFunc || !filterFunc instanceof Function)
return null;

// go up the dom tree starting at node and look for anchor
// before hitting a header, div or table element
while ((node != null) &&
(node.tagName != null) &&
(node.tagName != "A"))
{
if (filterFunc(node))
{
node = null;
break;
}
node = node.parentNode;
}

return node;
};
searchshield.getDocuments = function (frame, frameArray)
{ // recursively get all embedded frames/docs
frameArray.push(frame.document);
var frames = frame.frames;
for (var i = 0; i < frames.length; i )
{
// recurse on each frame
searchshield.getDocuments(frames[i], frameArray);
}
return frameArray;
};
searchshield.NextSiblingNode = function (element)
{
var TEXTNODE = 3;
var ParentNode = element.parentNode;

if (!ParentNode)
return;

var NextSibling = ParentNode.nextSibling;
while (NextSibling)
{
if (NextSibling.nodeType != TEXTNODE)
return NextSibling;

NextSibling = NextSibling.nextSibling;
}

return;
};
searchshield.getParentNodeByAttribute = function (attrName, attrValue, node, maxDepth)
{
if (!node)
return null;

var maxLoop = maxDepth ? maxDepth : 1;
var pNode = node.parentNode;

if (!pNode)
return null;

for(; 0 < maxLoop; maxLoop–)
{
if ((pNode[attrName]) &&
(pNode[attrName].toLowerCase() === attrValue.toLowerCase()))
{
return pNode;
}

pNode = pNode.parentNode;
if (!pNode)
return null;
}

return null;
};
searchshield.getParentNodeByClassName = function (className, node, maxDepth)
{
return searchshield.getParentNodeByAttribute("className", className, node, maxDepth);
};
searchshield.getParentNodeById = function (id, node, maxDepth)
{
return searchshield.getParentNodeByAttribute("id", id, node, maxDepth);
};
searchshield.getParentNodeByTagName = function (tagName, node, attrName)
{ // find parent node by tag name and optional attribute name
if (!tagName || !node || !node.parentNode)
return null;

tagName = tagName.toUpperCase();
while ((node != null) && (node.nodeType != 9))
{
// if attrName is not provided just return TRUE

if (node.nodeName == tagName)
{
var nodeHasAttribute = !!attrName ? node[attrName] : true;
if (nodeHasAttribute)
return node;
}

node = node.parentNode;
}

// no div
return null;
};
searchshield.getHrefFromCiteElement = function (tag)
{
var rtnHtml;

var tp = tag.parentNode;
var tgpn = tp ? tp.parentNode : null;
if (!tgpn)
return;

lastChildElem = tgpn.lastChild;
while ((lastChildElem != null) && (lastChildElem.nodeName != 'SPAN') && (lastChildElem.nodeName != 'DIV'))
{
lastChildElem = lastChildElem.previousSibling;
}

if (lastChildElem)
rtnHtml = lastChildElem.getElementsByTagName('cite')[0];

if (rtnHtml)
rtnHtml = rtnHtml.innerHTML;

return rtnHtml;
};
searchshield.getHrefFromSpanElement = function (tag)
{
var rtnHtml;

var tp = tag.parentNode;
var tgpn = tp ? tp.parentNode : null;
if (!tgpn)
return;

siblingElem = tgpn.nextSibling;
while ((siblingElem != null) && (siblingElem.nodeName != 'SPAN') && (siblingElem.className != 'site'))
{
siblingElem = siblingElem.nextSibling;
if (siblingElem && siblingElem.className && (siblingElem.className.match(/res[13]/)))
break;
}

if (siblingElem)
rtnHtml = siblingElem.getElementsByTagName('a')[0];

if (rtnHtml)
rtnHtml = rtnHtml.innerHTML;

return rtnHtml;
};
searchshield.getTopLevelDocument = function (doc)
{ // return the top level document for the given doc, could be itself

// TODO: determine a method of doing this for IE, if necessary

// don't check about:blank
if (doc && ((doc.location.href == "about:blank") || (doc.location.href == "about:Tabs")))
return doc;

// Check if already a top level document
for (var i = 0; i < gBrowser.browsers.length; i )
{
if (doc == gBrowser.browsers[i].contentDocument)
return doc;
}

// Not a top level, check all frames
var documents;
for (var j = 0; j < gBrowser.browsers.length; j )
{
// get all docs for each browser
documents = searchshield.getDocuments(gBrowser.browsers[j].contentWindow, new Array());
for (var k = 0; k < documents.length; k )
{
// check if doc is from current browser
if (doc == documents[k])
{
// it is, return the top level doc for this browser
return gBrowser.browsers[j].contentDocument;
}
}
}

return doc;
};
searchshield.getTopLevelWindow = function ()
{
// TODO: determine a method of doing this for IE, if necessary
return mediator.getMostRecentWindow("navigator:browser");
};

//Event functions
searchshield.addListener = function (object, evtType, listener, useCapture)
{
useCapture = !!useCapture;

if (object.addEventListener)
{
object.addEventListener(evtType, listener, useCapture);
return true;
}
else if (object.attachEvent)
{
object.attachEvent("on" evtType, listener);
return true;
}

return false;
};
searchshield.cancelEvent = function (event)
{
event.cancelBubble = true;
event.returnValue = false;
};
searchshield.doEvent = function (evtObj, evtTarget, evtName, evtType, bubbles, cancelable)
{
bubbles = !!bubbles;
cancelable = !!cancelable;

if (document.createEvent)
{
var evt = document.createEvent("Events");
evt.initEvent(evtName, bubbles, cancelable);
evtTarget.dispatchEvent(evt);
return true;
}
else if (document.createEventObject)
{
var evt = document.createEventObject(evtObj);
evtTarget.fireEvent("on" evtType, evt);
return true;
}

return false;
};
searchshield.removeListener = function (object, evtType, listener, useCapture)
{
useCapture = !!useCapture;

if (object.removeEventListener)
{
object.removeEventListener(evtType, listener, useCapture);
return true;
}
else if (object.detachEvent)
{
object.detachEvent(evtType, listener);
return true;
}

return false;
};

// HTML functions
searchshield.CleanupHTML = function (data)
{
if (data == null)
return data;

// cleanup html data, replace any new lines
data = data.replace(/r/g, "");
data = data.replace(/n/g, "");
// escape any single quotes
data = data.replace(/'/g, "\'");

return data;
};
searchshield.removeHtmlTags = function (str)
{
var re = new RegExp('(] >)’,’g’);
var strStr = new String(str);
if (!!strStr)
return strStr.replace(re, ”);
else
return str;

};

// Browser functions
searchshield.elementSize = function (element)
{
//returns an array [sizeX, sizeY]

var elemX;
var elemY;

elemX = parseInt(element.offsetWidth);
elemY = parseInt(element.offsetHeight)

return [elemX, elemY];
};
searchshield.GetFullBoundingRect = function (element)
{
if (!element) return;

// get bounding rect for incoming element
var elementRect = element.getBoundingClientRect();
var nextImg = null;
var nextImgRect = null;

// first check for another non-TextNode element after this one
var siblingElement = searchshield.NextSiblingNode(element);
if ( siblingElement &&
siblingElement.firstChild &&
siblingElement.id &&
siblingElement.id.indexOf(“XPLSS_”) != -1)
{
nextImg = siblingElement.firstChild;
nextImgRect = nextImg.getBoundingClientRect();
}
else
{
return elementRect;
}

if ((nextImgRect.top >= elementRect.bottom) &&
(nextImgRect.left <= elementRect.left))
{ // images appear to be on seperate lines
return elementRect;
}

// else merge the rects together into a new one
var newRect = new function() { this.top=0; this.left=0; this.right=0; this.bottom=0; this.mid=0;};
newRect.top = Math.min(elementRect.top, nextImgRect.top);
newRect.left= Math.min(elementRect.left, nextImgRect.left);
newRect.right=Math.max(elementRect.right, nextImgRect.right);
newRect.bottom=Math.max(elementRect.bottom, nextImgRect.bottom);
newRect.mid = Math.min(elementRect.right, nextImgRect.left);

return newRect;
};
searchshield.offsetLeft = function (element)
{
var offset = 0;
while (element)
{
offset = element.offsetLeft;
element = element.offsetParent;
}

return offset;
};
searchshield.offsetTop = function (element)
{
var offset = 0;
while (element)
{
offset = element.offsetTop;
element = element.offsetParent;
}

return offset;
};
searchshield.scrollSize = function (imageElem)
{
// returns an array [scrollX, scrollY, hasParentFrame]

var scrollX;
var scrollY;
var hasParentFrame;

// firefox
if (window.pageXOffset && window.pageYOffset)
{
scrollX = window.pageXOffset;
scrollY = window.pageYOffset;
}
else if (document.documentElement || document.body)
{
scrollX = document.documentElement.scrollLeft || document.body.scrollLeft;
scrollY = document.documentElement.scrollTop || document.body.scrollTop;

if (imageElem)
{
var frames = document.frames;
if (frames)
{
for (var i=0; i < frames.length; i )
{
var img;
try {
img = frames[i].document.getElementById(imageElem.id);
}
catch(domErr){}

if (img != null)
{
scrollX = frames[i].document.documentElement.scrollLeft;
scrollY = frames[i].document.documentElement.scrollTop;
hasParentFrame = true;
break;
}
}
}
}
}
else
{
scrollX = 0;
scrollY = 0;
}

return [parseInt(scrollX,10), parseInt(scrollY,10), hasParentFrame];
};
searchshield.viewPortSize = function ()
{
// returns an array [width, height, scrollYWidth], where scrollYWidth is always 0 for IE

var scrollXWidth = 19;
var scrollYWidth = 0; // 0 for Microsoft IE
var scrollBarX = false;
var windowX;
var windowY;

// firefox
if (window.innerWidth && window.innerHeight)
{
//TODO: validate this block if implemented for firefox

windowX = window.innerWidth – scrollXWidth;
windowY = window.innerHeight;

try
{
scrollYWidth = Math.floor(Math.abs(window.innerHeight – document.documentElement.clientHeight)) 1;
scrollBarX = (document.documentElement.clientWidth < document.documentElement.scrollWidth);
}
catch(err){}

if (scrollBarX && !scrollYWidth)
scrollYWidth = 18; //normally 17 ( 1 top border)

}
else if (document.documentElement || document.body)
{
windowX = (document.documentElement.clientWidth || document.body.clientWidth) – scrollXWidth;
windowY = document.documentElement.clientHeight || document.body.clientHeight;
}
else
{
windowX = 0;
windowY = 0;
}

return [windowX, windowY, scrollYWidth];
};
searchshield.zoomLevel = function ()
{
var level = 1;
if (document.body.getBoundingClientRect) {
// rect is only in physical pixel size before IE8
var rect = document.body.getBoundingClientRect();
level = Math.round (((rect.right – rect.left) / (document.body.offsetWidth)) * 100) / 100;
}

return level;
};

// Href functions
searchshield.checkUrl = function (url)
{ // cleanup a url, make sure there is a protocol on the front for scanning
try {
// trim
url = url.replace(/^s /, "").replace(/s $/, "");

// if no protocol, add http:// to it
if (url.indexOf("://") == -1)
url = "http://" url;
}
catch(err){}

return url;
};
searchshield.DoesURLContain = function (url, contain)
{
if ((url == null) || (url.length < 1))
return false;

// breakup the url to check
var parts = url.split('/');
if (parts.length -1)
return true;

return false;
};
searchshield.FilterUrl = function (url, filter)
{
if (!url || (url.length < 1))
return false;

if (!filter || !(filter instanceof Array))
return false;

var parts = url.split('/');
if ((parts == null) || (parts.length < 3))
return false;

var domain = parts[2];
for (var i = 0; i = 3))
{
return parts[2].toLowerCase();
}
}

return url;
};
searchshield.getUrlContents = function (url)
{
if (url == null)
return null;

// don’t query if local url
if (url.indexOf(“linkscanner://”) != -1)
return null;

try
{
req = new XMLHttpRequest();
req.open(“GET”, url, false);
req.send(null);
if (req.status == 200)
return req.responseText;
else
return null;
}
catch (err)
{
// nothing to do
return null;
}
};
searchshield.parseLink = function (href, simpleMode)
{
var uri = {};
var parameter = {
complex: {
pattern: /^(?:([a-z] ):(?:([a-z]*):)?//)?(?:([^:@]*)(?::([^:@]*))?@)?((?:[a-z0-9_-] .) [a-z]{2,})(?::(d ))?(?:([^:?#] ))?(?:?([^#] ))?(?:#([^s] ))?$/i,
element: [‘source’,’scheme’,’subscheme’,’user’,’pass’,’host’,’port’,’path’,’query’,’fragment’]
},
simple: {
pattern: /^(?:([a-z] )://)?((?:[a-z0-9_-] .) [a-z]{2,})(?:/)([^:?] )?(?:([?|#])([^?] ))?$/i,
element: [‘source’,’scheme’,’host’,’path’,’delimiter’,’query’]
}
};
var mode = simpleMode !== false ? ‘simple’ : ‘complex’;
var pattern = parameter[mode].pattern;
var element = parameter[mode].element;

if (!href)
return uri;

var matches = href.match(pattern);

if (matches)
{
// ——————–
// iterate over the matches array and populate uri properties
// using the respective element parameter as the name.
// NOTE: set raw property type as String to make inArray()
// work properly with instanceof.
// ——————–
for (var i=0; i < matches.length; i )
uri[element[i]] = new String(matches[i] || "");

// ——————–
// create an array, hostArray, from host, for example,
// host="www.google.com" and hostArray=["www","google","com"]
// ——————–
uri.hostArray = uri.host.split(".");

// ——————–
// create an array, qsArray, from query, for example,
// query='hl=en&q=javascript&btnG=Search&aq=f&aqi=g10&aql=&oq=&gs_rfai='
// qsArray=[{hl:'en'},{q:javascript}, … ,(qs_rfai:''}]
//
// $0=entire match, $1=capture 1, $2=capture 2
// must include $0 even though it is unused so
// the replace works properly
// ——————–
uri.qsArray = searchshield.parseQuery(uri.query);
}

//non-standard urls require a fail-safe that relies on simply splitting the href
function splitLink(href)
{
// split the href on '/'
var linkParts = href.split("/");

// need domain and path
if ((linkParts == null) || (linkParts.length < 2))
return false;

var uri = {
delimiter: (linkParts[3]).substring(0,1),
host: linkParts[2],
hostArray: (linkParts[2]).split('.'),
path: (linkParts[3]).substring(1),
qsArray: [],
query: '',
scheme: (linkParts[0]).substring(0, linkParts[0].length-1),
source: href
};

return uri;
}

if (!uri.host)
uri = splitLink(href);

return uri;
};
searchshield.parseQuery = function (qs)
{
var qsArray = [];
qs.replace(/(?:^|&)([^&=]*)=?([^&]*)/g,
function ($0, $1, $2) {
if ($1) qsArray[$1] = $2;
}
);

return qsArray;
};

// general functions
searchshield.arrayKeys = function (array)
{
var keys = new Array();
for(k in array)
keys.push(k);

return keys;
};
searchshield.inArray = function (key, array, caseSensitive, exactMatch)
{
if (! array instanceof Array)
return false;

if (caseSensitive !== true)
caseSensitive = false;

if (exactMatch !== false)
exactMatch = true;

if (key instanceof String)
{
for (var i=0; i < array.length; i )
{
var k = caseSensitive ? key.valueOf() : key.valueOf().toLowerCase();
var a = caseSensitive ? array[i] : array[i].toLowerCase();
if(exactMatch && k === a)
return true;
else if (!exactMatch && (-1 !== k.indexOf(a)))
return true;
}
}
else if (key instanceof Array)
{
for (var i=0; i < array.length; i )
for (var j=0; j < key.length; j )
{
var k = caseSensitive ? key[j] : key[j].toLowerCase();
var a = caseSensitive ? array[i] : array[i].toLowerCase();
if (exactMatch && k === a)
return true;
else if (!exactMatch && (-1 !== k.indexOf(a)))
return true;
}
}

return false;
};
searchshield.getClickHandlerParams = function(clickHandler)
{
var re = /((?:'[^']*')|[w]*)(?:,|))/ig;
var chParams = [];
clickHandler.replace(re,
function($0, $1, $2){
if ($1)
chParams.push($1);
}
);

return chParams;
};
// general use functions – end

// Search constructor
searchshield.Search = function()
{
this.doc = null;
this.engine = null;
this.engines = null;
this.links = null;
this.uri = null;
this.searchHash = null;
this.checkUrl = null;
this.useLocalImgs = null;
this.clockUrl = null;
// create engine list (actually key/value object will be used)
this.engineList = {};
};

searchshield.Search.prototype.getSearchNames = function()
{ // order is important
var names = [
'Google',
'AVGGoogle',
'AltaVista',
'AVGYahoo',
'Yahoo',
'Bing',
'MSN', // MSN redirects to BING
'Baidu',
'Earthlink',
'AOL',
'Ask',
'Yandex',
'Seznam',
'Webhledani',
'eBay',
///temp 'Digg',
'Slashdot',
'Twitter',
'GMail',
'Facebook',
'MySpace'
];
return names;
};

searchshield.Search.prototype.detectEngine = function(href)
{
if (!href)
return;

var aEng = searchshield.Search.prototype.getSearchNames();
var aEngLen = aEng.length;
for (var i=0; i < aEngLen; i )
{
if (searchshield[aEng[i] 'SearchEngine'].prototype.validSearch(href))
return aEng[i];
}

return;
};

searchshield.Search.prototype.addEngine = function(engine)
{
if (!this.engines)
this.engines = new Array();

this.engines.push(engine);
};

searchshield.Search.prototype.addLink = function(inElement, inHref)
{
if (!this.links)
this.links = new Array();

var hrefHash;
try
{
hrefHash = searchshield.avgCallFunc(this.doc, 'GetHash', inHref);
}
catch (e){}

var newNode = {
element: inElement,
href: inHref,
hash: hrefHash,
search: this.searchHash
};

this.links.push(newNode);

return newNode;
}

// process the search result page after all search engines have been added
searchshield.Search.prototype.process = function(doc)
{
// only process when searchshield is enabled
if (!searchshield.enabled(doc))
return;

this.doc = doc;
this.href = this.doc.location.href;
this.uri = searchshield.parseLink(this.href);

try
{
this.searchHash = searchshield.avgCallFunc(this.doc, 'GetHash', this.href);

// get any previously active engine
this.engine = this.engineList[this.searchHash.toString()];
}
catch (e) {}

/*

Process Steps:
1. Add all supported search engines
2. Identify the active search engine
3. Get all document links and add AVG images
*/

// STEP 1 – Add all supported search engines
if (!this.engines)
{
var aEng = xplSearch.getSearchNames();
var aEngLen = aEng.length;
for (var i=0; i < aEngLen; i )
{
xplSearch.addEngine(new searchshield[aEng[i] 'SearchEngine'](this));
}
}

// search the engines if we didn't find one
if (!this.engine)
{
// STEP 2 – Identify the active search engine
var engLen = this.engines.length;
for (var i = 0; i < engLen; i )
{
if (this.engines[i].validSearch())
{
this.engine = this.engines[i];
break;
}
}

// create a new engine instance to store
this.engineList[this.searchHash.toString()] = this.engine;

// init this search, if < 1 either an error or disabled
//var sdkInit = 0;
//try {
// sdkInit = xpl_sdk.SXPL_InitSearch(this.href);
//}
//catch(e){}
//if (sdkInit < 1)
// return false;
}

// return immediately if there is not an active search engine
if (!this.engine)
return false;

try {
// base url to check for icons
this.checkUrl = searchshield.avgCallFunc(this.doc, 'GetIconUrl', '1');

// check if using linked or local icons
this.useLocalImgs = !searchshield.getUrlContents(this.checkUrl);

// get the clock url
this.clockUrl = searchshield.avgCallFunc(this.doc, 'GetIconUrl', '0');
}
catch(e){}

// STEP 3 – Get all document links and add AVG images
var alltags = this.doc.getElementsByTagName("*"); // this method works for IE, FF and Chrome
for (var i=0; i -1))
{
return;
}

// mark search result anchor so it isn’t processed repeatedly
if (score == undefined)
element.setAttribute(“avglschecked”, hash “S” this.VeriSignSplit);

// create a new image
var img = doc.createElement(‘img’);
img.src = image;
img.id = “XPLSS_” hash;
img.style.borderStyle = “none”;
img.style.margin = “0 3px”;

// for IE, specify these style attributes to prevent inadvertent inheritance from parent
if (img.width && img.height)
{
img.style.width = img.width ‘px’;
img.style.height = img.height ‘px’;
}

// apply custom element styles
this.updateElementStyle(img, this.addImageStyle);

// create the link element
var anchor = doc.createElement(“A”);
anchor.setAttribute(“id”, “LXPLSS_” hash);

if ((hidden != null) && (hidden == true))
{ // hiding the parent will also hide its child nodes
anchor.style.display = “none”;
}

// Default anchor styles
//Over-ride possible border style with inline declaration
anchor.style.borderStyle = “none”;

// apply custom element styles
this.updateElementStyle(anchor, this.addAnchorStyle);

if (score == searchshield.SCORE_SS_VERISIGN)
{
anchor.style.textDecoration = “none”;
anchor.style.background = “none repeat scroll 0 0 transparent”;
}

// append the image to the link
anchor.appendChild(img);

// insert the node as either a sibling or a child
if (insertNode != null)
parentNode.insertBefore(anchor, insertNode);
else
parentNode.appendChild(anchor);

return anchor;
};
searchshield.SearchEngine.prototype.updateImage = function (hash, search, score, image, alt_image, flyover, click_thru, altClick_thru)
{
var updated = false;

var frameDoc = this.search.doc;
var docFrames = frameDoc.frames;
var frameElem;
if (docFrames && this.processFrames)
{
for (var i=0; i < docFrames.length; i )
{
try {
if (docFrames[i].document.getElementById(hash))
{
frameElem = docFrames[i].frameElement;
frameDoc = docFrames[i].document;
break;
}
}
catch(err){}
}
}

while ((element = frameDoc.getElementById(hash)) != null)
{
// check configuration to determine if verdict display property
var showVerdict = true;
var nSeverity = Number(score – 1);
switch (nSeverity)
{
case searchshield.XPLCHECK_RESULT_SEV_LOW:
showVerdict = this.showLowRiskVerdicts;
break;
case searchshield.XPLCHECK_RESULT_SEV_MED:
showVerdict = this.showMedRiskVerdicts;
break;
case searchshield.XPLCHECK_RESULT_SEV_NONE:
showVerdict = this.showCleanVerdicts;
break;
default:
if (score == searchshield.SCORE_SS_VERISIGN)
showVerdict = this.showCleanVerdicts;
break;
}

// remove image if no url specified
if ((!showVerdict) || (image == null) || (image.length anchor->containerNodes…
while (cN && maxLoop–)
{
if (cN.tagName == “DIV” || cN.tagName == “SPAN”)
{
// get object height depending on ie document mode
var clientHeight = (cN.clientHeight == 0 ||
(this.search.doc.documentMode && this.search.doc.documentMode < 8)) ?
cN.offsetHeight :
cN.clientHeight;
scrl = cN.scrollHeight – clientHeight;
break;
}

cN = cN.parentNode;
}

if (0 eH)
eH = reduceBy;

var newDim = Math.ceil(eH*element.height);

element.height = newDim;
element.width = newDim;

element.style.height = newDim “px”;
element.style.width = newDim “px”;
}
}
catch(e){}
}

// set default style attributes
element.style.display = “”;

// if verisign icon showing move our icon up for better centering of the 2
// except for IE7 browser – it does not like this style
try {
var ieVersion = parseFloat(navigator.appVersion.split(“MSIE”)[1]);
if (alt_image && (alt_image.length > 0) && ieVersion != 7)
element.style.verticalAlign = “10%”;
}
catch(err){};

// apply custom element styles
this.updateElementStyle(element, this.updateImageStyle)

// update the click thru
var link = this.search.doc.getElementById(“L” hash);
if (link)
{
link.href = click_thru;
link.id = link.id “U” score;
}

updated = true;

// add the alternate image if supplied BUT not on avg yahoo
if ((alt_image) &&
(alt_image.length > 0) &&
(!this.omitAltImage) &&
(this.VeriSignSplit != searchshield.VERISIGN_SPLIT_TESTB))
{

var vhash = hash.substring(hash.indexOf(“_”) 1);

// create a temporary link node
var tmp_node = {
element: element.parentNode,
href: altClick_thru,
hash: vhash “VU” score,
search: this.searchHash,
score: score
};

var altAnchor = this.addImage(tmp_node, alt_image, false);
if (altAnchor && altAnchor.firstChild)
{
altAnchor.firstChild.setAttribute(“onmouseover”, “”);
altAnchor.href = altClick_thru;
}
}
}

if (updated != false)
{
this.resizeFrame(frameElem);
return true;
}

return false;
};
searchshield.SearchEngine.prototype.updateElementStyle = function (element, elementStyle)
{
if (elementStyle)
{ // a NULL attribte value will unset it
for(attr in elementStyle)
{
try {
if (element.style.setAttribute)
element.style.setAttribute(attr, elementStyle[attr]);
else
element.style[attr] = elementStyle[attr];
} catch(err){}
}
}
};

searchshield.SearchEngine.prototype.resizeFrame = function (frameElem)
{ // resize frame to prevent unwanted scrolling after inserting verdicts

// ignore inline and non-frame engines
if ((this.type == ‘inline’) || (!this.processFrames))
return;

// ensure all required elements are available
if ((frameElem == null) || (frameElem.style == null) || (frameElem.contentWindow == null))
return;

// if frame is scrolling vertically then resize
var frameHeight = parseInt(frameElem.style.height, 10);
if (!isNaN(frameHeight) && (frameHeight < frameElem.contentWindow.document.body.scrollHeight))
frameElem.style.height = frameElem.contentWindow.document.body.scrollHeight 'px';

return;
};

searchshield.SearchEngine.prototype.getImgElement = function (element)
{ // return an xpl img element associated with a given element
if (element == null)
return null;

// go up the parent tree looking for a header or div
while ( (element.parentNode != null) &&
(element.tagName.charAt(0) != "H") &&
(element.tagName.charAt(0) != "D") &&
(element.tagName.charAt(0) != "T") )
{
element = element.parentNode;
}

// if all the way to the top, nothing
if ((element.tagName == "HTML") || (element == null))
return null;

// get image tags, if none we are done
var imgTags = element.getElementsByTagName("IMG");
if ((imgTags == null) || (imgTags.Length < 1))
return null;

for (var i = 0; i = 5)
{ //if set to default then get config value
if (this.showCleanVerdicts === true)
this.showCleanVerdicts = (parseInt(parts[0]) == 1) ? true : false;

if (this.showLowRiskVerdicts === true)
this.showLowRiskVerdicts = (parseInt(parts[1]) == 1) ? true : false;

if (this.showMedRiskVerdicts === true)
this.showMedRiskVerdicts = (parseInt(parts[2]) == 1) ? true : false;

this.VeriSignSplit = (parseInt(parts[4]));
}

return true;
};

searchshield.SearchEngine.prototype.init_inline_ratings = function (doc)
{
if ((doc == null) || (doc.getElementById(“XPLSS_InlineFlyover”)))
return;

if (!searchshield.quirksMode)
{
// create style for inline flyovers
var styleTag = doc.createElement(“style”);
styleTag.setAttribute(“id”,”avgILFOStyle”);

var headTag = doc.getElementsByTagName(“head”)[0];
headTag.appendChild(styleTag);

var inline_style = styleTag.styleSheet;
// stub in the b

DİĞER HABERLER
EN TEMEL GIDAYA ERİŞMEK BİLE LÜKS
EN TEMEL GIDAYA ERİŞMEK BİLE LÜKS

47 aydır artan gıda enflasyonu nedeniyle sağlıklı beslenmek lüks oldu.

PATRONLAR İÇİN YAŞAMAYACAĞIZ
PATRONLAR İÇİN YAŞAMAYACAĞIZ

1 Mayıs, 8 saatlik iş günü mücadelesinin bir sonucuydu. ABD’de daha kısa çalışma saatleri tekrar sendikaların gündeminde. Otomobil İşçileri Sendikası (UAW) 32 saatlik iş haftasını grev ve örgütlenme talepleri arasına aldı.

HALKIN ENFLASYONU YÜZDE 95.7
HALKIN ENFLASYONU YÜZDE 95.7

Türkiye’de 47 aydır yükselen gıda fiyatları ile halkın enflasyonu nisanda yüzde 95.7’ye ulaştı.

RASYONEL ZEMİN SLOGAN DÜZEYİNDE KALDI
RASYONEL ZEMİN SLOGAN DÜZEYİNDE KALDI

Mehmet Şimşek’in “Rasyonel zemine dönmek zorundayız” anlayışı iyi niyetli ve gerekli bir yaklaşımdır. Ne var ki Türkiye’de bugünkü koşullarda slogan düzeyinde kalmak zorundadır.