var helper = null;
var note = null;

var isIE = true;

function empty(){}
function normalStart(){
	resetDebug();
	helper = new helpObject();
	helper.init();
	if (window.event){
		isIE = true;
	}else{
		isIE = false;
	}
	error = new helpObject();
	error.init();
	
}
function sob(element){
	var obj = new Object();
	obj.id = element;
	obj.x = null;
	obj.y = null;
	obj.z = null;
	
	
	obj.px = null;
	obj.py = null;
	var tmp = $(element);
	if(tmp.style){
	
		with(obj){
			x = parseInt(tmp.style.left || tmp.offsetLeft);
			y = parseInt(tmp.style.top || tmp.offsetTop);
			z = parseInt(tmp.style.zIndex || '0');
			px = parseInt(tmp.style.width || tmp.offsetWidth);
			py = parseInt(tmp.style.height || tmp.offsetHeight);
		}
	}
	return obj;
}
function vis(id,p){
	id = $(id);
	if(p){
		id.setStyle({visibility : 'visible'});
	}else{
		id.setStyle({visibility : 'hidden'});
	}
}
function px(object){
	return parseInt(object.style.width || object.offsetWidth);
}
function hideObject(object_id){
	var ob = $(object_id);
	if(!ob){
		return false;
	}
	d('Ukrywanie obiektu ' + object_id);
	ob.style.display = 'none';
	return true;
}
function showObject(object_id){
	var ob = $(object_id);
	if(!ob){
		return false;
	}
	d('Pokazywanie obiektu ' + object_id);
	ob.style.display = 'block';
	return true;
}
function helpObject(){
	var obj = new Object();
	obj.ht = null;
	obj.init = function(){
		obj.ht = document.createElement('div');
		obj.ht.id = 'helper';
		with(obj.ht.style){
			visibility = 'hidden';
			border = '1px solid gray';
			color = 'black';
			background = 'yellow';
			padding = '1px 5px 2px 1px';			
			zIndex = 100;
			width = 'auto';
			height = 'auto';
			position = 'absolute';
			left = '0px';
			top = '0px';
		}
		obj.ht.innerHTML = null;
	    document.body.appendChild(obj.ht);
	}
	obj.show = function(x,y,text){
		showObject(obj.ht.id);
		moveToCenter(obj.ht.id);
		obj.ht.innerHTML = text;
	}
	obj.hide = function(){
		with(obj.ht.style){
			visibility = 'hidden';
			left = '0px';
			top = '0px';
		}
	}
	return obj;
}

function gotosite(site) { if (site != "") { self.location=site; }}
function okno(url, width, height) { xx=(screen.availHeight-height)/2-10; yy=(screen.availWidth-width)/2; var Win = window.open(url,"displayWindow",'width=' + width + ',height=' + height + ',top='+xx+',left='+yy+',resizable=0,scrollbars=yes,menubar=no' );}
function shBlock(block_id){	var obj = $(block_id);if(!obj) return false;D(obj.style.display + 'Styl obecny obiektu: ' + block_id);if(obj.style.display=='none'){	if(obj.style.display_old){obj.style.display  = obj.style.display_old;return true;} obj.style.display = 'block';	return true;}	obj.style.display_old = obj.style.display;obj.style.display = 'none';return true;}
var an = 0;
var al = 0;
var ai = 0;
if (document.getElementById) {
	ai = 1;
}else {
	if (document.all) {
	al = 1;
	} else {
		browserVersion = parseInt(navigator.appVersion);
		if ((navigator.appName.indexOf('Netscape') != -1) && (browserVersion == 4)) {
			an = 1;
		}
	}
}
function fd(oi, wS) {
	if (ai) return wS ? document.getElementById(oi).style:document.getElementById(oi);
	if (al) return wS ? document.all[oi].style: document.all[oi];if (an) return document.layers[oi];
}
function pw() { return window.innerWidth != null? window.innerWidth: document.body.clientWidth != null? document.body.clientWidth:null;}
/*function mouseX(evt) { if (evt.pageX) return evt.pageX; else if (evt.clientX) return evt.clientX + (document.documentElement.scrollLeft ? document.documentElement.scrollLeft : document.body.scrollLeft);else return null;}
function mouseY(evt) { if (evt.pageY)return evt.pageY;else if (evt.clientY)return evt.clientY + (document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop);else return null;}*/
var last_id = null;
function pops(evt,oi) {
	var wp = pw();
	ds = fd(oi,1);
	dm = fd(oi,0);
	if (dm.offsetWidth) ew = dm.offsetWidth; 
	else if (dm.clip.width){
		ew = dm.clip.width;
	}
	var cursor = {
		x : Event.pointerX(evt),
		y : Event.pointerY(evt),
	}
 
	tv = cursor.y + 20;
	lv = cursor.x - (ew/4);
	if (lv < 2)
		lv = 2;
	else if (lv + ew > wp)
		lv -= ew/2;
	if (!an) {
		lv += 'px';
		tv += 'px';
	}
	ds.left = lv;
	ds.top = tv;
	ds.visibility = "visible";
	last_id = oi;
	document.onmouseout = poph_auto;
	document.onclick = poph_auto;
}
var hint_box = null;
function popHint(evt,text){
	var cursor = {
		x : Event.pointerX(evt),
		y : Event.pointerY(evt),
	}
	if(hint_box == null){
		hint_box = new Element('div',{id:'hint_box',className : 'tip'});
		document.body.appendChild(hint_box);
		with(hint_box.style){
			zIndex = 100;
			width = 'auto';
			height = 'auto';
			position = 'absolute';
		}
	}
	hint_box.innerHTML = text;
	if(cursor.x && cursor.y){
		d('x:' + cursor.x + ' y:'+cursor.y);
		hint_box.setStyle({
			left : (cursor.x - 20)+ 'px',
			top : (cursor.y + 20) + 'px',
			position : 'absolute',
			visibility : 'visible'
		});
		last_id = 'hint_box';
		d(hint_box.style.left);
		document.onmouseout = poph_auto;
		document.onclick = poph_auto;
	}
}
function poph_auto(event){if($(last_id)){$(last_id).style.visibility = "hidden";document.onmouseout = null;}}
function moveToCenter(id,min_top_offset){
	id = $(id);
	if(!min_top_offset){
		min_top_offset = 0;
	}
	var y = 0;
	if(!$(id)){
		return false;
	}
	var dim = id.getDimensions();
	if(document.documentElement){
		var main = $(document.documentElement);
		//y += document.documentElement.cumulativeScrollOffset();
	}else{
		var main = $(document.body);
		//y += document.body.cumulativeScrollOffset();
	}
	//ustalam pozycje na osi Y
	y = scrollTop() + 28;
	if(y < 0 || y < min_top_offset){
		y = min_top_offset;
	}
	id.style.top = y + 'px';
	var left = (main.getDimensions().width / 2) - (dim.width / 2);
	//ustalam pozycje na osi X.
	id.style.left = (main.getDimensions().width / 2) - (dim.width / 2) + 'px';
}
function maximizeWindow(id){
	$(id).setStyle({
		left : 0,
		top : 28,
		width : (document.viewport.getWidth() - 0) + 'px',
		height : (document.viewport.getHeight() - 0) + 'px'
	});
}
function scrollTop(){
	if(document.documentElement && document.documentElement.scrollTop){
		return parseInt(document.documentElement.scrollTop);
	}else{
		return parseInt(document.body.scrollTop);
	}
	return 0;
}
function scrollLeft(){
	if(document.documentElement && document.documentElement.scrollLeft){
		return parseInt(document.documentElement.scrollLeft);
	}else{
		return parseInt(document.body.scrollLeft);
	}
	return 0;
}
function windowHeight() {
	if (window.innerHeight){
		return parseInt(window.innerHeight);
	}
	else if (document.body && document.body.offsetHeight){
		return parseInt(document.documentElement.clientHeight);
		//return parseInt(document.body.offsetHeight);
	}
	return null;
} 
function windowWidth() {
	if(document.documentElement.offsetWidth){
		return parseInt(document.documentElement.offsetWidth);
	}
	if (window.innerWidth){
		return parseInt(window.innerWidth);
	}
	if (document.body && document.body.offsetWdith){
		return parseInt(document.body.offsetWidth);
	}
	return null;
}
/**
 * Funkcja przelaczania zakladek.
 *
 * @param	group_name Nazwa grupy
 * @param	element_id Identyfikator glowny
 * @param	element_array	Tablica JS zawierajaca liste identyfikatorow
 */
function switchTabs(group_name, element_id,element_array){
 	var obj;
 	for(index in element_array){
 		i = element_array[index]; 
 		if($(group_name + i)){
 			//d(group_name + i);
 			obj = $(group_name + i);

 			if(element_id == i){
 				tabik = $(group_name + '_tab' + i);
 				if(tabik){
 					tabik.className = 'on';
 				}
 				obj.style.display = 'block';
 			}else{
 				tabik = $(group_name + '_tab' + i);
 				if(tabik){
 					tabik.className = 'off';
 				}
 				obj.style.display = 'none';
 			}
 		}
 	}
}
function sTab(obj){
	obj = $(obj);
	var TA = $A(obj.parentNode.parentNode.childElements());
	var id = String(obj.id);
	id = id.substring(4);
	TA[0].childElements().each(function(item){
		if(item.id == obj.id){
			item.className = 'on';
		}else{
			item.className = 'off';
		}
	});	
	TA[1].childElements().each(function(item){
		if(item.id == id){
			item.show();
		}else{
			item.hide();
		}
	});
}
/**
 * 
 * @param obj	Obiekt lub jego unikalne ID
 * @param tag_name	Nazwa tagu 
 * @param css_name	OPcjonalna nazwa klasy CSS
 * @return
 */
function findParent(obj,tag_name,css_name){
	var finded = false;
	var obj = $(obj);
	var tag_name = tag_name.toUpperCase();
	if(obj.type == tag_name){
		if(css_name && obj.className.indexOf(css_name)>-1){
			d('findParentByTag - obj finded but class not match');
			finded = true;
		}else{
			finded = true;
		}
	}
	while(!finded){
		if(Object.isUndefined(obj.parentNode)){
			break;
		}
		var parent = obj.parentNode;
		if(parent.tagName.toUpperCase() == tag_name){
			if(css_name){
				if(parent.className.indexOf(css_name) > -1){
					d('findParentByTag - obj finded');
					finded = true;
				}
			}else{
				finded = true;
			}
		}
		obj = parent;
	}
	if(finded){
		d('findParentByTag - ' + obj.id);
		return obj;
	}
	d('findParentByTag - false');
	return null;
}
/**
 * Odszukaj element nadrzedny na podstawie klasy CSS
 * @param	obj			Wiezy do elementy z ktorego zaczynamy szukanie ID lub obiekt
 * @param	class_name	Nazwa klasy CSS elementy ktory chcesz znazlezc
 * 
 */
function findParentByCSS(obj,class_name){	
	var finded = false;
	var obj = $(obj);
	if(obj.className.indexOf(class_name) > -1){
		finded = true;
	}
	while(!finded){
		if(Object.isUndefined(obj.parentNode)){
			break;
		}
		var parent = obj.parentNode;
		if(parent.tagName.indexOf(class_name)>-1){
			finded = true;
		}
		obj = parent;
	}
	if(finded){
		d('findParentByCSS - '+ obj.id);
		return obj;
	}
	d('findParentByCSS - false');
	return null;
}