Emeğin Gücü, Emekçinin Yanındayız...
TEKGIDA-İŞ SENDİKASI
TEKGIDA-İŞ SENDİKASI
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
TavsanliUn
Tat
Tamek
Sırma Su
Sunel
Sibaş
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
Doğuş Cips
Dr Oetker
Agthia
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
TavsanliUn
Tat
Tamek
Sırma Su
Sunel
Sibaş
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
Doğuş Cips
Dr Oetker
Agthia
22 Eylül 2011
KIDEM TAZMİNATINDA YALANLAR VE GERÇEKLER

Kıdem tazminatıyla ilgili bakanın gündeme getirdiği Avusturya Modeline dayanan yeni sistemin, istihdam paketi içinde yer alması bekleniyor..

KIDEM TAZMİNATINDA YALANLAR VE GERÇEKLER

       Mevcut kıdem tazminatı sisteminin kaldırılması ve yerine fona dayalı yeni bir sistem kurulması yönündeki tartışmalar son günlerde iyice arttı. Geçtiğimiz haftadan itibaren önümüzdeki dönemde kurulacak yeni sistemin ana hatlarının netleştiği ve Avusturya Modeli olarak bilinen sistemin hükümet tarafından benimsendiği konuşuluyor. Devlet Bakanı Cevdet Yılmaz’ın bir gazeteye verdiği röportajla gündeme gelen Avusturya Modeline dayanan yeni sistemin önümüzdeki aylarda açıklanması beklenen istihdam paketi içinde yer alması bekleniyor.

       Kıdem tazminatı tartışmalarında yıllardır sermaye örgütlerinin yaptığı tespit ve değerlendirmeler, son dönemde bizzat hükümet yetkilileri ve bakanlar tarafından dile getiriliyor. Sermaye örgütlerinin beklentileri ve talepleri doğrultusunda şekillenmesi beklenen kıdem tazminatı konusu, görünen o ki açıklanacak istihdam paketinin en önemli gündemi olacak.

       Yıllardır işçi hakları ile ilgili olarak üzerinde en çok tartışılan konu kıdem tazminatlarının durumu. Sermaye güçleri ve hükümetlerin üzerinden ince hesaplar yaptığı bir konu olan kıdem tazminatı, işçiler için temel bir hak, işverenler için ise işgücü maliyetini yükselten, işçilerin işten çıkarılmasını zorlaştıran bir uygulama olarak görülüyor.

AVUSTURYA MODELİ BİR KANDIRMACA

       Devlet Bakanı Cevdet Yılmaz, geçtiğimiz Cuma günü bir gazetede yayınlanan röportajda; kıdem tazminatı fonu tartışmalarında Avusturya Modelini tercih ettiklerini, her işçinin kendisine özgü hesaplar olacağını ve kişiye özgü hesap olduğu zaman bu hesapların kötüye kullanılmasının önüne geçileceğini iddia ediyor. İşçilerin kendi hesabında biriken tutarları uygun şartlar oluştuğunda kullanabileceğini, kişisel hesaplardaki parayı, kamunun yönetiminde kurulacak bir Fon aracılığıyla yöneteceklerini söylüyor.

       Türkiye’de şu anda geçerli olan kıdem tazminatı sistemiyle uzaktan yakından ilgisi olmayan bir ülkeden örnek verilmesi, kıdem tazminatı fonu tartışmalarında bir kez daha oyun içinde oyun olduğunu gösteriyor. Özellikle hükümet temsilcileri kıdem tazminatı ile ilgili olarak yalan yanlış bilgiler vererek kamuoyunu yönlendirip, milyonlarca işçiyi yapacakları değişikliklere ikna etmeye çalışıyorlar.

       Bakanla röportaj yapan gazetenin haberine göre Avusturya’da eski sisteme göre 3-5 yıl çalışanlara 2 aylık, 5-10 yıl çalışanlara 3 aylık, 10-15 yıl çalışanlara 4 aylık, 15-20 yıl çalışanlara 6 aylık, 20-25 yıl çalışanlara 9 aylık ve 25 yıldan fazla çalışanlara ise 12 aylık ücret tutarında kıdem tazminatı ödenirken, yapılan değişiklikle kıdem tazminatı sistemi tamamen değiştirilmiş ve işverenin ödediği paranın bir fon tarafından yönetilmesi sağlanmış. Avusturya’da çalışanların kıdem tazminatları bir havuzda değil, kendileri adına açılan bir hesapta birikiyor ve değerlendiriliyormuş. Böylece işçinin hesabında biriken fona devlet ve işverenler dokunamıyormuş.

       Avusturya modeli denilen sistemde önceden 25 yıl hizmeti olan bir işçi 12 aylık ücreti üzerinden kıdem tazminatı alabiliyorken, değişiklikten sonra 12 ay üzerinden kıdem tazminatı alabilmesi için en az 37,5 yıl (yani 12,5 yıl daha fazla) fiilen çalışması gerekiyor. Yine hükümetin benimsediği Avusturya Modeline göre 40 yıl boyunca ücretlerde yıllık yüzde 3, fonun getirişinde de yıllık yüzde 6’lıkreel artış olacağı hesaplanmış. Neresinden baksanız önceki düzenlemeyi aratan bir değişikliği iyi bir şey yapılmış gibi anlatıyorlar. Üstelik bu modele göre bir işçinin 12 aylık kıdem tazminatı alabilmesi için 35-40 yıl çalışması öngörülüyor. Bu öneriyi ortaya atanlar Türkiye’de bir işçinin bu kadar süre çalışabileceğini düşünecek kadar aptal değildir herhalde.

       Avusturya’da çalışan işçilerin haklarını daha da geriye götüren bir modelin, Türkiye’de kıdem tazminatı sorununu çözecekmiş gibi sunulması, tepkiler gelince Çalışma Bakanı’nın "Kıdem tazminatı konusunda bir taslak çalışması yok" şeklinde açıklama yapması, hükümetin bir süre daha kamuoyunu ikna etmek için çalışacağını gösteriyor.

HEDEF PATRONLARIN YÜKÜNÜ AZALTMAK

       Türkiye’de işçiler hukuken bir yıl çalıştıktan sonra kıdem tazminatı alma hakkı kazanır. Türkiye’de 20 yıl çalışmış bir işçinin, son aldığı brüt ücreti üzeriden 20 aylık kıdem tazminatı alma hakkı vardır. Oysa OECD ülkelerinde ortalama olarak 20 yıllık çalışmaya karşı sadece 6 aylık kıdem tazminatı ödenir. Başka bir ifade ile OECD ülkelerinde ortalama 3,3 yıl çalışmaya karşılık ancak 1 aylık kıdem tazminatı ödenirken, Türkiye’deki işçilerin her yıl için 1 aylık ücret almasının birilerini çok rahatsız ettiği anlaşılıyor. Kıdem tazminatının fona devredilmek istenmesinin altında yatan esas neden, sermayeyi bu yükten bir şekilde kurtarmak.

       OECD tarafından yapılan bir araştırmaya göre, 9 ay kıdemi olan bir işçiye, Türkiye’de hiç kıdem tazminatı ödenmiyor. Portekiz ve Meksika’da 3 aylık, Çek Cumhuriyeti’nde 2 aylık, İtalya’da 21 günlük, Yunanistan ve İspanya’da 15 günlük ücret kadar işçilere kıdem tazminatı ödeniyor. 4 yıllık bir işçinin alacağı kıdem tazminatı Portekiz’de 4 ay, İtalya’da 3,5 ay, Meksika’da 3 ay, İspanya’da 2 ay 20 gün, Japonya’da 2 ay, Çek Cumhuriyeti’nde 2 ay ve Yun a n i s tan’da 1,5 aylık ücret tutarında.

       Kıdem tazminatından işçilerin çok küçük bir kesiminin (yüzde 7) yararlandığı bir gerçek. Bu durum, kıdem tazminatı fonu tartışmalarında patronların ve hükümetin elini güçlendiriyor. Ancak bu durumun sorumlusu olarak kıdem tazminatı alabilen işçileri göstermek kadar anlamsız bir şey olamaz. Patronlar kıdem tazminatı yükümlülüğünden kaçınmak için işçileri tam yıl sigortalı göstermiyor veya tazminatı hak etmeyecek şekilde işten ayrılmaya zorluyorlar. Bu durum, fiilen kıdem tazminatı alamayan taşeron işçilerin, mevsimlik işçilerin, yevmiye ile çalışanların ve her türlü güvencesiz istihdam edilen işçilerin kıdem tazminatı fonu ile ilgili olarak daha kolay ikna edilmelerini sağlıyor. "Kıdem tazminatı fonu kurulursa biz de tazminatımızı alırız" diye düşünen işçilerin sayısı hiç de az değil.

       Oysa kıdem tazminatı fonu kurulmasındaki asıl amaç, patronların yaklaşan kriz ortamında işçileri, en az maliyetle bireysel ya da toplu olarak işten çıkarmasının önünün açılması. Kıdem tazminatı fonu, işveren açısından işçinin işine son vermeyi kolaylaştırıcı bir etki yaratacağından, kıdem tazminatının işten çıkartmadaki caydırıcı etkisini ortadan kaldıracak. Patronlar zaten belli bir orandaki parayı fona yatıracağı için (eğer yatırırlarsa) işçilere toplu para ödeme yükünden kurtulacaklar ve her sıkıştıklarında işçi çıkarma yoluna gidecekler. Böylece çıkarttıkları işçilerin yerine daha az maliyetli, daha düşük ücrete çalışacak yeni işçiler alabilecekler.

KIDEM TAZMİNATI YARI YARIYA DÜŞECEK

       Türkiye’de özellikle kayıt dişiliğin yaygın olduğu özel sektörde işçilerin çok büyük bir bölümü hukuken kıdem tazminatını hak ettiği halde, patronların çeşitli hileleri ile bu haklarını elde edemedikleri biliniyor. Bu durumu propaganda malzemesi yapan hükümet yetkilileri, "Fon ? kurulduğunda her işçi tazminatını fondan alacak", "Kıdem tazminatı nu kurulduğunda işçilerin kaybı olmayacak" vb gibi yalan yanlış ifadelerle, özellikle kıdem tazminatı almakta zorluk çeken işçilerin kafasını karıştırıyorlar. Hükümetin "işçilerin hak kaybı olmayacak" söylemi kesinlikle gerçeği yansıtmıyor. Kıdem tazminatı fonu kurulursa patronların her işçi için kıdem tazminatı fonuna belli oranda prim ödemesi gerekecek. Kurulacak fon sisteminde, işçiler mevcut sistemde alabileceği tazminatı alabileceklere, hatta mevcut sistemde tazminat alamayanlar da bu haktan yararlanacaksa fon kurulmasının asıl amacı olan "işverenlerin prim yükünü azaltmak" nasıl mümkün olacak? Bu soruya verilecek yanıt, ortalıkta dolaşan yorumların hangilerinin gerçek, hangilerinin işçileri ikna etmeye yönelik yalanlar olduğunu gösterecek. Kıdem tazminatı fonuna yatırılacak primin yüzde 3 olması durumda, birikecek prim ile işçinin her yıl için 30 günlük ücret tutarında kıdem tazminatı alması mümkün değil. Çünkü fonda, işçinin ücretinden aylık en az yüzde 8 oranında prim kesilirse her bir yıllık çalışma için 30 günlük ücreti karşılayacak kadar para birikebilir. İşçi ücretinden yüzde 3 prim kesilerek, kıdem tazminatının 30 günlük ücret üzerinden ödenmesi kesinlikle mümkün değil. Bu, işçilere ödenecek kıdem tazminatının çalışılan her yıl için 30 gün yerine en fazla 15 günlük ücret üzerinden olacağı anlamına geliyor. Bu basit bir hesaplama hatası değil, sermaye ve hükümet çevreleri tarafından özellikle yapılmış bir hesaplama.

 YALANLARA KARŞI DOĞRU BİLGİLENDİRME

       Kıdem tazminatına yönelik değişikliklerden en çok etkilenecek olan işçilerin bağlı olduğu sendika ve konfederasyonların bugüne kadar işçi haklarını korumak konusunda iyi bir sınav verdiği söylenemez. Türk-İş ve DİSK kıdem tazminatı fonuna karşı çıkıp olası değişiklikleri "genel grev" sebebi sayarız derken, Hak-İş hükümet temsilcileriyle benzer tezler ileri sürerek kıdem tazminatı fonu kurulmasından yana açıklamalar yapıyor. Ancak hükümetin bu konudaki etkili ve yaygın propagandası, sendikalardan yükselen itirazlar ve meydan okumalardan çok daha fazla ikna edici oluyor. Kıdem tazminatı fonu uygulaması hayata geçerse, bırakın Avusturya Modelini, hangi model uygulanırsa uygulansın, işçilerin kıdem tazminatı miktarında bugüne kıyasla en az yarı yarıya bir düşüş yaşanacak. Bugün kıdem tazminatını alamayan işçilerin, Fon kurulduğu zaman bu hakkı elde edeceklerinin hiçbir garantisi yok. Çalışanların yüzde 45’i kayıt dışı çalışıyor. Bugünde kıdem tazminatı alamayan kayıt dışı çalışanlar yeni düzenleme ile de alamayacaklar. İşçilerinin sigortasını bile yatırmayan, sendikaya üye olunca kapı önüne koyan patronların, kıdem tazminatı fonu primlerini zamanında yatıracağının garantisini kim verecek? Türk-İş, kıdem tazminatına dokunulursa "genel grev yaparız" diyerek hükümete meydan okuyor. Toplam sendikalı işçi sayısı göz önüne alındığında, böylesi büyük bir saldırının tek başına sendikaların karşı çıkmasıyla püskürtülmesi mümkün görünmüyor. Bu nedenle hükümet propagandasının işçiler üzerindeki inandırıcı etkisini de dikkate alarak, fabrikalarda ve bütün işyerlerinde işçi temsilcileri ve ileri işçiler bu saldırıya ve diğer hak gasplarına karşı yalanlarla gerçekleri birbirinden ayıracak tarzda doğru bilgilendirmeler yapmak zorundalar.
?/////////// 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 base image name as the url
inline_style.addRule(“.avgILFO”, “background: url(linkscanner://default_inline_border_tl.png) no-repeat top left;”);
inline_style.addRule(“.avgILFO”, “width:0px; font-size:0px; z-index:9999; visibility:hidden; position:absolute; left:-5000px;”);

inline_style.addRule(“.avgILFO_content”, “background: url(linkscanner://default_inline_border_r.png) top right repeat-y;”);
inline_style.addRule(“.avgILFO_content”,”font-size:10px; color:black; padding:0px 10px; text-align:left; word-wrap:break-word; line-height:130%”);

inline_style.addRule(“.avgILFO_head”, “background: url(linkscanner://default_inline_border_tr.png) no-repeat top right;”);
inline_style.addRule(“.avgILFO_head”, “width:0px; height:5px;”);
inline_style.addRule(“.avgILFO_head div”,”height:5px;”);

inline_style.addRule(“.avgILFO_foot”, “background: url(linkscanner://default_inline_border_bl.png) no-repeat bottom left”);
inline_style.addRule(“.avgILFO_foot”, “height:5px;”);

inline_style.addRule(“.avgILFO_foot div”, “background: url(linkscanner://default_inline_border_br.png) no-repeat bottom right”);
inline_style.addRule(“.avgILFO_foot div”, “height:5px; width:0px;”);
}

try {
// create the popup box
var box = doc.createElement(“DIV”);
if (searchshield.quirksMode)
{
box.style.visibility = “hidden”;
box.style.position = “absolute”;
box.style.left = “-5000px”;
}

box.setAttribute(“id”, “XPLSS_InlineFlyover”);
box.setAttribute(“class”, “avgILFO”);

doc.body.appendChild(box);
box = null;
}
catch(boxErr){}
};

searchshield.SearchEngine.prototype.show_inline_ratings = function (doc, node, image)
{
var href = node.href;
var anchor = node.element;

if ((href == null) || (href.length < 1))
return;

if (avglsinlineflyover.imageExists(anchor))
return;

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

// get verdict
this.display_inline(doc, anchor, href, node, false);
};

searchshield.SearchEngine.prototype.display_inline = function (doc, anchor, href, node, update, min_severity)
{
// min_severity is the lowest severity to display, so setting it to
// 1 would not display safe icons

var results = searchshield.avgCallFunc(doc, 'MalsiteCheck', href);
if (results == null)
return;

var parts = results.split('::');

// need at least severity
if (parts == null)
return;

var nSeverity = parseInt(parts[0]);

if (!update && nSeverity == searchshield.XPLCHECK_RESULT_SEV_NONE)
{
var shortUrl = searchshield.FilterUrl(href, this.s

DİĞER HABERLER
COCA COLA MERSİN FABRİKASINDAYDIK
COCA COLA MERSİN FABRİKASINDAYDIK

İşyeri eğitimlerine Coca Cola Fabrikalarıyla devam ediyoruz. 26 Kasım 2022 tarihinde Mersin Fabrikasındaki üyelerimizle Etkili İletişim konusunda bir araya geldik.

2023 YILI GELİR VERGİSİ YAKLAŞIK DİLİM TUTARLARI BELİRLENDİ!
2023 YILI GELİR VERGİSİ YAKLAŞIK DİLİM TUTARLARI BELİRLENDİ!

Gelir Vergisi Kanunu’nun mükerrer 123’üncü maddesine göre, vergi tarifesinin gelir dilim tutarları her yıl bir önceki yıla ilişkin olarak Vergi Usul Kanunu hükümlerine göre belirlenen yeniden değerleme oranında artırılmak suretiyle uygulanır.

YUNANİSTAN’DA İŞ GÜVENCESİ VE KIDEM TAZMİNATI
YUNANİSTAN’DA İŞ GÜVENCESİ VE KIDEM TAZMİNATI

Türkiye’de giderek derinleşmekte olan ekonomik kriz, işçiler açısından iş güvencesinin önemini her geçen gün daha da artırmaktadır.

EYT HAKKINDA AKLINIZA TAKILAN SORULARA YANITLAR
EYT HAKKINDA AKLINIZA TAKILAN SORULARA YANITLAR

Emeklilikte yaşa takılanlar (EYT) ile ilgili düzenlemede sona doğru gelindi. Prof. Dr. Cem Kılıç, Milliyet okurlarının EYT hakkındaki sorularını yanıtladı…