/**
 * @author Pawe� Knapik
 */

/* zamien elementowi [e] klase [c] na [cc]  */
function replaceClass(e,c,cc) { e.className=e.className.replace(' '+c,' '+cc); }

var panel = {

	moveOpts : function(from,tg,all) {
		var opts = from.getElementsByTagName('option');
		var scTop = parseInt(from.scrollTop);
		for(var i=0;i<opts.length;i++) {
			if(opts[i].selected || opts[i].defaultSelected || (opts[i].getAttribute('selected') == 'selected') ||all) { 
				var c = opts[i].className+'';
				opts[i].selected = opts[i].defaultSelected = false;
				var t = ($(c)&&$(c).parentNode==tg) ? $(c) : tg;
				t.appendChild(opts[i].parentNode.removeChild(opts[i]));
				i--	
			}
		}
		from.scrollTop = scTop;
		if(!tg.getElementsByTagName('optgroup').length) panel.sortOpts(tg);
		
	},
	
	sortOpts : function(elm) {
		var opts = elm.getElementsByTagName('option');
		var a = [];
		for(var i=0;i<opts.length;i++) {
			a.push([opts[i].firstChild.nodeValue,opts[i]]);
		}
		a.sort();
		for(var j=0;j<a.length;j++) {
			opts[j].parentNode.replaceChild(a[j][1].cloneNode(true),opts[j]);
		}
	},
	
	makeList : function(elm) {
		elm.style.display='none';
		if($(elm.id+'List')) return;
		var d = document.createElement('select');
		d.multiple = 'multiple';
		d.size = '18';
		d.id = elm.id+'List';
		elm.parentNode.insertBefore(d,elm);
		panel.moveOpts(elm,d,1)
		panel.sortOpts(d);
		
		elm.parentNode.getElementsByTagName('a')[0].className = 'active';
		elm.parentNode.getElementsByTagName('a')[1].className = '';
		
	},
	
	makeTree : function(elm) {
		elm.style.display='';
		if(!$(elm.id+'List')) return;
		var from = $(elm.id+'List');
		panel.moveOpts(from,elm,1)
		from.parentNode.removeChild(from);
		
		elm.parentNode.getElementsByTagName('a')[1].className = 'active';
		elm.parentNode.getElementsByTagName('a')[0].className = '';
	},
	
	toggleTree : function(elm) {
		elm.className = (elm.className=='close') ? '' : 'close';
	},
	
	selectAll : function() {
		var targets = getElementsByClass('target',$('plannerform'));
		for(var i=0;i<targets.length;i++) {
			var opts = targets[i].getElementsByTagName('option');
			for(var j=0;j<opts.length;j++) opts[j].selected = true;
		}
		return true;
	},
	
	renderCols : function() {
		var list = $('selectCols').getElementsByTagName('ul')[0];
		var boxes = list.getElementsByTagName('input');
		var table = $('wyniki');
		var trs = table.getElementsByTagName('tr');
		
		var displayCol = function(colnum,o) {
			for(var i=(trs.length-1);i>=0;i--) {
				if(!hasClass(trs[i],'group')&&i>0) trs[i].getElementsByTagName('td')[colnum].style.display=(o=='off')?'none':'';
				else if(!hasClass(trs[i],'group')&&i==0) trs[i].getElementsByTagName('th')[colnum].style.display=(o=='off')?'none':'';
			}			
		}
		
		for(var i=(boxes.length-1);i>=0;i--) {
			boxes[i].checked?displayCol(i+1,'on'):displayCol(i+1,'off');
			
		}

	},
	
	zebra : function(table) {
		var trs = table.getElementsByTagName('tr');
		for(var i=trs.length-1;i>1;i--) {
				if(trs[i].className!='group' && i%2) trs[i].className =  'odd';
			}
	}

}

var advtabs = {
	tabs : [],
	tabCont : {},
	init : function() {
		this.tabCont = $('plannerform');
		$('plannerform').className = 'tabs';
		var ul = $('tabswitch') ? $('tabswitch') : document.createElement('ul');
		ul.setAttribute('id','tabswitch')
		
		this.tabs = getElementsByClass('tab',this.tabCont,'fieldset');
			for(var i=0;i<this.tabs.length;i++) {
				var li = document.createElement('li');
				li.appendChild(document.createTextNode(getElementsByClass('desc',this.tabs[i])[0].firstChild.nodeValue));
				li.setAttribute('id','tab'+i);
				li.onclick = function() { advtabs.switcher(this.id); }

				$(li.id)?'':ul.appendChild(li);				
				//this.tabs[i].style.display='none';
			}
		this.tabCont.insertBefore(ul,this.tabCont.firstChild);

		panel.moveOpts($('sel8List')||$('sel8'),$('sel8Target')); 
		
	},
	
	switcher : function(tab) {
		for(var i=(this.tabs.length-1); i>=0; i--) { this.tabs[i].style.display = 'none'; }
		var lis = this.tabCont.getElementsByTagName('li');
		for(var i=(lis.length-1); i>=0; i--) { lis[i].className = ''; }
		this.tabs[tab.substr(3)].style.display = 'block';
		$(tab).className = 'active';
	},
	
	notabs : function() {
		for(var i=(this.tabs.length-1); i>=0; i--) { this.tabs[i].style.display = ''; }
		$('plannerform').className = '';
		
	},
	
	killtab : function(tab) {
		$('tabswitch').removeChild($(tab));
		tab=tab.substr(3);
		for(var i=0;i<this.tabs.length;i++) { if(i==tab){this.switcher('tab'+(i-1));this.tabs[i].parentNode.removeChild(this.tabs[i]); }  }
	}
}

var advsorta = {
	sorted:-1,
	t:{},
	trs:[],
	tds:[],
	exPL: function(x){
		return x.toLowerCase().replace(/[aescólnzz]/g,function(s){
		return(s=='a'?'a':s=='e'?'e':s=='s'?'s':s=='c'?'c':	s=='ó'?'o':s=='l'?'l':s=='n'?'n':s=='z'?'z':'zz')+'z'})
	}, 
	
	init:function(tb) {
		var ths = tb.getElementsByTagName('th');
		for(var j=(ths.length-1);j>=0;j--) {
			if(hasClass(ths[j],'sort')) { ths[j].onclick = function(){advsorta.sort(this)} }
		}
		this.t = tb;
	},
	
	sort : function(c) {
	var  t1=new Date(); 
		var tbodies = this.t.getElementsByTagName('tbody');
		var cols = this.t.getElementsByTagName('th');
		var cn; // numer kolumny, ktorej head zostal klikniety.
		for(var i=(cols.length-1);i>=0;i--) { (cols[i]!=c)?(cols[i].className==""?void(0):cols[i].className="sort"):cn=i; }
		if(this.sorted==cn) {
			c.className = hasClass(c,"asc")? c.className.replace(" asc"," desc"):c.className.replace(" desc"," asc");	
		}
		else { c.className+=" asc";	}
		var asc = hasClass(c,"asc");

	for(var t=0;t<tbodies.length;t++) {		
			this.trs=[];
			var trs = tbodies[t].getElementsByTagName('tr');
			var typ = cn==0?'':'num';

			for(var i=(trs.length-1);i>=0;i--) {
					var vl = ''; 
					if(trs[i].getElementsByTagName('td')[cn]&&trs[i].getElementsByTagName('td')[cn].firstChild){
						vl = trs[i].getElementsByTagName('td')[cn].firstChild;
						while(vl.firstChild){vl=vl.firstChild}
						vl = vl.nodeValue;
					}
					var ix = hasClass(trs[i],'group')? -1 : (typ=='num'&&vl) ? parseInt(vl.replace(/[a-zA-Z\s]/gi,'')): (vl) ? this.exPL(vl.replace(/\.\s/gi,'')) : -2;
					this.trs.push([ix,trs[i]]);
			}

			if(typ=='num') {
				asc?this.trs.sort(function(a,b){return a[0]-b[0]}).reverse():this.trs.sort(function(a,b){return a[0]-b[0]});
			}
			else {
				asc?this.trs.sort().reverse():this.trs.sort();
			}
 
		var tmptab = document.createElement('tbody');
		for(var i=(this.trs.length-1);i>=0;i--) {
			if(!hasClass(this.trs[i][1],'group')) this.trs[i][1].className=(i%2)?'odd':'';			
			this.trs[i][0]!=-1 ? 
				tmptab.appendChild(this.trs[i][1].cloneNode(true)) : 
				tmptab.insertBefore(this.trs[i][1].cloneNode(true),tmptab.firstChild);
		}
		this.t.replaceChild(tmptab,tbodies[t]);
		}
		this.sorted = cn;
		var t1e=new Date(); 
		//alert(t1e-t1);
	}
	
}

var leftnav = {
	rozwin : function() {
		$('leftNav').className='';
		$('plannerRozwin').innerHTML = '<a href="#" onclick="leftnav.zwin();return false;"><strong>Zwiń menu</strong></a>';
	},
	zwin : function() {
		$('leftNav').className = 'plannerWynik';
		$('plannerRozwin').innerHTML = '<a href="#" onclick="leftnav.rozwin();return false;"><strong>Rozwiń menu</strong></a>';
	}
}

window.onload = function() { 
	if($('plannerform')) {
		advtabs.init(); 
		advtabs.switcher('tab0');
	} 
	if($('wyniki')) { 
		panel.zebra($('wyniki')); 
		advsorta.init($('wyniki'));
		}
	}

