/* dodatkowe skrypty dla bloga harry'ego*/
/* wersja  0.9 (2008-10-26) wstawianie reklam Blogvertising na poczatek waskiej szpalty jako dokumentu HTML w iframe*/
/* wersja 0.10 (2009-11-24) przesuwa wstawiony blok reklam AdTaily nad box Archiwum a efekcie pod box Blogvertising*/

//zmienne i parametry
var rozwinod = window.rozwinod || 1;						//od którego folderu zakładki mają pozostać ROZWINIĘTE
var rozwinile = window.rozwinile || 99;					//ile kolejnych folderów zakładek ma być ROZWINIĘTYCH
var Authors = ["harry122","mr.polarny"];					//loginy autorów bloga do zaznaczania komentarzy
var W3CDOM = (document.createElement && document.getElementsByTagName);
var idAdt = window.idAdt || 'adt';							//(v0.10) ID elementu przenoszonego, domyslnie 'adt' dla <div id="adt"></div>
var idAdtWhr = window.idAdtWhr || 'reklamabv';				//(v0.10) ID element docelowego - miejsca przeniesienia; tu wsczesniej wstawiony blok reklamy Blogvertising'
var moveAdtBef = window.moveAdtBef || false;				//(v0.10) gdy true, to wstawia element przenoszony przed elementem docelowym (ktory musi miec jakis swoj nadrzedny - parentNode)
															//(v0.10) gdy false, to dopisuje na koniec elementu przenoszonego, jako ostatni element - lastChild

// funkcje pomocnicze
function $(d){	return document.getElementById(d);}
function hasClass(obj,cName) { return new RegExp('\\b'+cName+'\\b').test(obj.className);} 
function hasClasses(obj,classes) { 
	for (f=0; f<classes.length; f++) if (!hasClass(obj,classes[i])) return false;
	return true; 
}
function addClass(obj,cName) { 
    if (!hasClass(obj,cName)) obj.className+=obj.className?' '+cName:cName;
    return true; 
} 
function removeClass(obj,cName) { 
	if (!hasClass(obj,cName)) return false; 
	var rep=obj.className.match(' '+cName)?' '+cName:cName;
	obj.className=obj.className.replace(rep,'');
	return true; 
} 
function switchClass(obj,to,from) { 
	if (hasClass(obj,from)) removeClass(obj,from);
    addClass(obj,to); 
	return true; 
}
function getElementsByClassName(container, tag, className) { 
	container = container||document; 
	tag=tag||'*'; 
	var all = container.all||container.getElementsByTagName(tag);
	var found=new Array(); 
	for (f=0; f<all.length; f++) { 
		var el=all[f]; 
		if (hasClass(all[f],className)) found.push(all[f]); 
	} 
	return found; 
}

//funkcje encode64 i encode pochodza z orginalnego skryptu wstawiającego widget BlogFroga. 
var keyStr = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";
function encode64(input){
   var output = "";
   var chr1, chr2, chr3;
   var enc1, enc2, enc3, enc4;
   var i = 0;
   do {
      chr1 = input.charCodeAt(i++);
      chr2 = input.charCodeAt(i++);
      chr3 = input.charCodeAt(i++);

      enc1 = chr1 >> 2;
      enc2 = ((chr1 & 3) << 4) | (chr2 >> 4);
      enc3 = ((chr2 & 15) << 2) | (chr3 >> 6);
      enc4 = chr3 & 63;

      if (isNaN(chr2)) {
         enc3 = enc4 = 64;
      } else if (isNaN(chr3)) {
         enc4 = 64;
      }
      output = output + keyStr.charAt(enc1) + keyStr.charAt(enc2) +
         keyStr.charAt(enc3) + keyStr.charAt(enc4);
   } while (i < input.length);
   return output;
}
function encode(val){
   return encode64(val).replace(new RegExp('/','g'),'_').replace(new RegExp('\\+','g'),'-').replace(new RegExp('=','g'),':');
}
//funkcja szymona (http://testblog.blox.pl) wstawiajaca glosowanie blogfroga na stronie notki z komentarzami
function insertBFVote(){
 var bf = document.createElement('iframe');
 bf.id = 'BloxFrog';
 bf.src = 'http://blogfrog.pl/index.php/wpisy/vote_button/'+encode(document.URL.replace(/(#[^ ]*)$/,''))+"/white";
 bf.width = 224;
 bf.height = 33;
 bf.frameBorder = 0;
 bf.setAttribute('scrolling','no');
 var d = document.getElementById('PolecWpisStrKom');
 d.parentNode.insertBefore(bf, d);
}
//funkcje debergeraca
function AppendBlogFrogItem( BaseNode, PermaLink ){
 id = encode(PermaLink);
	
 var BlogFrogElem = document.createElement("iframe");
 BlogFrogElem.src = "http://blogfrog.pl/index.php/wpisy/vote_button/"+id+"/white";
 BlogFrogElem.width = 165;
 BlogFrogElem.height = 28;
 BlogFrogElem.frameBorder = 0;
 BlogFrogElem.setAttribute("scrolling","no");
 BaseNode.appendChild(BlogFrogElem);
}
function AppendBlogFrogItems(){
   var AllLinks = document.getElementsByTagName('a');
   for(i=0; i<AllLinks.length; i++)
   {
      if( AllLinks[i].className.match(/(^|\s)IPTlinkuj(\s|$)/)) 
      {
         var BaseElem = AllLinks[i];
			var NewElem = document.createElement("p");
			NewElem.className = "BFvote";
			BaseElem.parentNode.insertBefore(NewElem,BaseElem);
			AppendBlogFrogItem( NewElem, AllLinks[i].href );
      }
   }
}

//dodaje awatary MBL do komentarzy: autor DeBergerac (http://debergerac.blox.pl)
function AppendAvatarItems() {
   var AllLinks = document.getElementsByTagName('div');
   for(i=0; i<AllLinks.length; i++)
   {
	  if( AllLinks[i].className.match(/(^|\s)InfoKomentarzAuthor(\s|$)/)) 
	  {   
		 var BaseElem = AllLinks[i];
		 var InnerAnch = AllLinks[i].getElementsByTagName('a');				
		 if(( InnerAnch!=null )&&( InnerAnch.length>0 ))
		 {
			var AnchElem = document.createElement("a");
			var ImgElem = document.createElement("img");			
			if ( InnerAnch[0].href.substr(7,40) == 'www.blox.pl/html?page=userProfilePreview') {
				AnchElem.href = InnerAnch[0].href;				
				ImgElem.src = "http://sgk74exp.blox.pl/resource/mbl.blox.48.png";				
			} else {
				AnchElem.href = "http://www.mybloglog.com/buzz/co_redir.php?t=&href="+InnerAnch[0].href+"&n=";
				ImgElem.src = "http://pub.mybloglog.com/coiserv.php?href="+InnerAnch[0].href+"&n=";
			}			
			ImgElem.width = 24;
			ImgElem.height = 24;
			ImgElem.vspace = 0;
			ImgElem.hspace = 0;
			AnchElem.appendChild(ImgElem);
			BaseElem.parentNode.insertBefore(AnchElem,BaseElem);
			ImgElem.className = "MBLAvatar";
			i++;
		 }
	  }
   }
}

//  zaznaczanie komentarzy autora: wersja: 1.2.1 (13.09.2007),  autor: s.z.y.m.o.n[SHIFT+2]gazeta.pl
function markAuthorsComments() {
 if (cdiv = document.getElementById("SkomentujListaKomentarzy")){
  if (divs = cdiv.getElementsByTagName("div")) {
   for (i=0; i<divs.length; i++){
    div = divs[i];
    if (div.className == "InfoKomentarzAuthor") {
     for (j=0; j<Authors.length;j++) {
      if (div.innerHTML.indexOf(Authors[j]+"</")>0){
       div.parentNode.className += " KomentarzAutora";
       break;
      } 
     }
    }
   }
  }
 }
}

//funkcja wspolna dla zwijania archiwum/zakladek- event onClick zwija/rozwija folder
function arbmShowHideGroup () {
	var pd = getElementsByClassName(this.parentNode, 'div', 'PoziomDrzewa');
	for (var i=0; i<pd.length;i++) {
		if (pd[i].number == this.number) {
			if (pd[this.number-1].style.display == 'block') {
				switchClass(this,'off','on');
				pd[this.number-1].style.display = 'none';
			}
			else {
				switchClass(this,'on','off');			
				pd[this.number-1].style.display = 'block';
			}
		}
	}
}
//zwijanie archiwum, autor: sgk (http://sgk74exp.blox.pl)
function bloxZwinArchiwum (div) {
	var yr = '1999';
	var yc = '1999';
	var fid = 1;
	
	var arcd = div.getElementsByTagName('a');
	arr = new Array(arcd.length);
	for (var i=0;i<arcd.length;i++) {
		arr[i] = new Array(2);
		arr[i][0] = arcd[i].href;
		arr[i][1] = arcd[i].innerHTML;
	}
	
	for (var i=0;div.childNodes.length;i++) { div.removeChild(div.lastChild); }	
	
	tfz = document.createElement('div');
	tfz.id = 'ArchiwumTytul';
	tfz.innerHTML = 'Archiwum';
	div.appendChild(tfz);
	
	for (var i=0;i<arr.length;i++) {
		ahr = arr[i][0];
		ads = arr[i][1];
		yc = ads.substr((ads.length-4),4)
		
		if ( yc != yr ) {			
			tfz = document.createElement('div');
			tfz.className = 'TytulFolderaZakladek off';
			tfz.style.cursor = 'pointer';
			tfz.number = fid;
			tfz.onclick = arbmShowHideGroup;	//zdarzenie do zwijania
			tfz.innerHTML += yc;
			div.appendChild(tfz);
			yr = yc;
			
			pd = document.createElement('div');
			pd.className = 'PoziomDrzewa';
			pd.number = fid;
			pd.style.display = 'none';
			div.appendChild(pd);
			fid++;
			
			ze = document.createElement('div');
			ze.className = 'ZakladkaEtykieta';
			ze.innerHTML = '<a href="'+ahr+'">'+ads+'</a>';
			pd.appendChild(ze);		
		}
		else {
			ze = document.createElement('div');
			ze.className = 'ZakladkaEtykieta';
			ze.innerHTML = '<a href="'+ahr+'">'+ads+'</a>';
			pd.appendChild(ze);	
		}		
	}
}
//zwijanie i ladowanie zakladek autor: sgk (http://sgk74exp.blox.pl)
 //zwija istniejace zakladki
function bloxZwinZakladki(div) {
	if (!W3CDOM) return;
	if (!div) return;
	var nav = div.childNodes;
	var fid = 1;
	for (var i=0;i<nav.length;i++) {
		if (nav[i].className =='TytulFolderaZakladek') {
			nav[i].number = fid;		
			if ( fid >= rozwinod && fid <= rozwinod+rozwinile-1 ) {
				addClass(nav[i],'on');
			} else {
				addClass(nav[i],'off');
			}
			nav[i].style.cursor = 'pointer';			
			nav[i].onclick = arbmShowHideGroup;
		}
		else if (nav[i].className =='PoziomDrzewa') {
			nav[i].number = fid;
			nav[i].style.display = ( fid >= rozwinod && fid <= rozwinod+rozwinile-1 ) ? 'block' : 'none';
			fid += 1;
		}
	}
}
 //laduje i zwija zakladki z pliku OPML
function bloxLadujZakladkiOPML(url, div) {
	if (!W3CDOM) return;
	if (!div) return;
	if (window.ActiveXObject) {
		xmlDoc=new ActiveXObject("Microsoft.XMLDOM");
		xmlDoc.async=false;
		xmlDoc.load(url);
		opml2bloxDOM(xmlDoc, div);
	}	
	else if (document.implementation && document.implementation.createDocument) {
		xmlDoc=document.implementation.createDocument("","doc",null);
		xmlDoc.load(url);		
		xmlDoc.onload = function () { 
				opml2bloxDOM(xmlDoc, div); 
			};
	}
	else {
		div.innerHTML = 'Nie załaduje pliku '+url;
	}
}
function opml2bloxDOM (xmlDoc, div) {
	var bmarks = xmlDoc.getElementsByTagName("outline");
	var fid = 1;
	for (var i=0, max=bmarks.length; i<max; i++) {
		title   = bmarks[i].getAttribute("text");
		htmlurl = bmarks[i].getAttribute("link");
		if (htmlurl) {
			ze = document.createElement('div');
			ze.className = 'ZakladkaEtykieta';
			ze.innerHTML = '\n<a href="'+htmlurl+'">'+title+'</a>';
			pd.appendChild(ze);			
		}
		else {
			tfz = document.createElement('div');
			tfz.className = 'TytulFolderaZakladek';
			tfz.className += (fid >= rozwinod && fid <= rozwinod+rozwinile-1) ? ' on' : ' off';
			tfz.style.cursor = 'pointer';
			tfz.number = fid;
			tfz.onclick = arbmShowHideGroup;
			div.appendChild(tfz);
			tfz.innerHTML += title+'\n';
			
			pd = document.createElement('div');
			pd.className = 'PoziomDrzewa';
			pd.number = fid;
			pd.style.display = (fid >= rozwinod && fid <= rozwinod+rozwinile-1) ? 'block' : 'none';
			div.appendChild(pd);
			fid++;
		}
	}
}

//wstawia dodatkowe bloki div przed i po wpisem aby dokleić zaokrąglenia boxów, trick autorstwa sgk (http://sgk74exp.blox.pl)
function insertCornerDivs() {
	var newel;
	var wpis;
	if ($('BlogWazkaSzpalta')) {
		var wpisyg = getElementsByClassName($('BlogSzerokaSzpalta'),'div','BlogWpisTresc');
		if (wpisyg) {
			for (var i=0;i<wpisyg.length;i++) {
				wpis = wpisyg[i];
				newel = document.createElement('div');
				newel.className = "BWTpo";
				wpis.parentNode.insertBefore(newel, wpis.nextSibling);				
				wpis.style.border = 'none';
				wpis.style.padding = '0px 20px 0px 20px;';			
			}
		}		
		wpisyg = getElementsByClassName($('BlogSzerokaSzpalta'),'div','BlogWpisItemTytul');
		if (wpisyg) {
			for (var i=0;i<wpisyg.length;i++) {
				wpis = wpisyg[i];
				newel = document.createElement('div');
				newel.className = "BWTprzed";
				wpis.parentNode.insertBefore(newel, wpis.nextSibling);
			}
		}		
	}
	
	if ($('SkomentujBox')) {
		$('BlogSzerokaSzpalta').style.marginTop = '0px';		//korekta marginesu po kategoriach na stronie komentarzy	
		var wpisyk = getElementsByClassName($('SkomentujBox'),'div','TrescKomentowanegoWpisu');
		if (wpisyk) {
			wpis = wpisyk[0];		 		
			newel = document.createElement('div');
			newel.className = "BWTpo";
			wpis.parentNode.insertBefore(newel, wpis.nextSibling);
			wpis.style.border = 'none';
			wpis.style.padding = '0px 20px 0px 20px;';				
		}
		wpisyk = getElementsByClassName($('SkomentujBox'),'div','TytulKomentowanegoWpisu');
		if (wpisyk) {
			wpis = wpisyk[0];		 
			newel = document.createElement('div');
			newel.className = "BWTprzed";
			wpis.parentNode.insertBefore(newel, wpis.nextSibling);
		}		
	}
}

//wstawia widzet MBL w oddzielnym iframe po zaladowaniu strony, co przyspiesza jej ladowanie, trick autorstwa sgk (http://sgk74exp.blox.pl)
function insertMBL() {
 var mbl = document.createElement('iframe');
 mbl.id = 'imbl';
 mbl.src = '/resource/harry.mbl.html';
 mbl.width = 250;
 mbl.height = 600;
 mbl.frameBorder = 0;
 mbl.setAttribute('scrolling','no');
 $('mbl').appendChild(mbl);
}

//wstawia blok SponsorWidget z systemu Blogvertising na poczatek waskiej szpalty jako iframe, z oddzielnego HTMLa
function insertBVSW(){	
	//tworzy blok div z reklama Blogvertising
	var divbv = document.createElement('div');
	divbv.id = 'reklamabv';
	
	//tworzy w nim div z tytulem jak folder zakladek blox
	var divtyt = document.createElement('div');
	divtyt.className = 'TytulFolderaZakladek';
	divtyt.innerHTML = "REKLAMA";
	divbv.appendChild(divtyt);
	
	//tworzy w nim kolejny div, ktory bedzie mial sobie iframe z blokiem reklamowym
	var divfrm = document.createElement('div');
	divfrm.id = 'rbv';
	
	var bvwyso = window.bvwyso || 220;			//wysokosc elementu "blogvertising sponsor widget"
	var bvszer = window.bvszer || 160;			//szerokosc elementu "blogvertising sponsor widget"	
	//tworzy iframe z dokumentem zawierajacym sponsor widget
	var ifrmbv = document.createElement('iframe');
	ifrmbv.id = 'ifrmbv';
	ifrmbv.src = '/resource/blogvertising.html';
	ifrmbv.width = bvszer;
	ifrmbv.height = bvwyso;
	ifrmbv.frameBorder = 0;
	ifrmbv.setAttribute('scrolling','no');	
	divfrm.appendChild(ifrmbv);
	//wstawia iframe do diva
	divbv.appendChild(divfrm);

	//-doklejanie bloku AdTaily wstawionego w HTML - w zasadzie przerzucenie go z dołu pod blok Blogvertising
	var nSrc = $(idAdt);
	var is_ie = navigator.userAgent.toLowerCase().indexOf('msie') > -1;	
	var is_chrome = navigator.userAgent.toLowerCase().indexOf('chrome') > -1;
	var is_safari = navigator.userAgent.toLowerCase().indexOf('safari') > -1;
	if (is_ie || is_chrome || is_safari) {
		var inh = nSrc.innerHTML;
		nSrc.parentNode.removeChild(nSrc);	
		var n = document.createElement('div');
		n.innerHTML = inh;
		n.setAttribute("id",idAdt);			//dostaje id kopiowanego elementu
	}
	else {
		var n = nSrc.cloneNode(true);
		nSrc.parentNode.removeChild(nSrc);		
	}
	divbv.appendChild(n);	
	//-koniec doklejania bloku AdTaily
	
	//wstawia caly blok reklamowy jako pierwszy w waskiej szpalcie
	var ws;
	if (!(ws=$('SkomentujWazkaSzpalta'))) ws=$('BlogWazkaSzpalta');
	ws.insertBefore(divbv, ws.firstChild);
}


//funkcje dodawane przez EventListenera
function doFuncs() {
	insertCornerDivs();
	if ($('SkomentujWazkaSzpalta')) {
		markAuthorsComments();
		AppendAvatarItems();
		insertBFVote();
		
		var newel = document.createElement('div');
		newel.id = 'ZakladkiOPML';
		$('SkomentujWazkaSzpalta').appendChild(newel);
		bloxLadujZakladkiOPML('/resource/bookmarks.xml',$('ZakladkiOPML'));		
	}
	else {
		AppendBlogFrogItems();
	}
	insertBVSW();
	bloxZwinZakladki($('ZakladkiItems'));
	insertMBL();
}

//main
if ($('SkomentujWazkaSzpalta')) {}
else {
 if ( $('BlogArchiwumBox') ) bloxZwinArchiwum($('BlogArchiwumBox')); 
}

if (window.addEventListener) { window.addEventListener('load', doFuncs, false);} 
else { if (window.attachEvent) { window.attachEvent('onload', doFuncs);} }
