/**
* MaxSportOnline - sklep internetowy - główny plik JavaScript
*/
var nowosc_rozszerzona = null;
var przecena_rozszerzona = null;
var nowosc_active = false;
var przecena_active = false;
var fx_duration = 200;
// $E() - alias to document.getElementById() {{{
function $E(element_id)
{
	return document.getElementById(element_id);
} // }}}
// ImgShower class {{{
var ImgShower = Class.create();
ImgShower.prototype = {
	initialize: function(a, img) {
		a_el = $(a);
		this.img = $(img);
		a_el.onmouseover	= this.show.bindAsEventListener(this);
		a_el.onmouseout		= this.hide.bindAsEventListener(this);
		this.hide();	// domyślnie ukryte
	},
	show: function(event) {
		this.img.style.display = 'inline';
	},
	hide: function(event) {
		this.img.style.display = 'none';
	}
}
// ImgShower class }}}
// ImgReplacer class {{{
var ImgReplacer = Class.create();
ImgReplacer.prototype = {
	initialize: function(a, img1, img2) {
		a_el = $(a);
		this.img1 = $(img1);
		this.img2 = $(img2);
		a_el.onmouseover	= this.over.bindAsEventListener(this);
		a_el.onmouseout		= this.out.bindAsEventListener(this);
		// domyślnie nie ma kursora nad pozycją menu
		this.out();
	},
	over: function(event) {
		this.replace(true);
	},
	out: function(event) {
		this.replace(false);
	},
	replace: function(over) {
		this.img1.style.display = (over ? 'none' : 'inline');
		this.img2.style.display = (over ? 'inline' : 'none');
	}
}
// end: ImgReplacer class }}}
// ImgRollover class {{{
var ImgRollover = Class.create();
ImgRollover.prototype = {
	initialize: function(theImg, src_out, src_over, back) {
		this.img = $(theImg);
		this.back = (back ? true : false);
		this.img_out = new Image();
		this.img_out.src = src_out;
		this.img_over = new Image();
		this.img_over.src = src_over;
		this.img.onmouseover	= this.over.bindAsEventListener(this);
		this.img.onmouseout		= this.out.bindAsEventListener(this);
		// domyślnie nie ma kursora nad elementem
		this.out();
	},
	over: function(event) {
		if (this.back) {
			this.replaceBgImg(true);
		} else {
			this.replaceSrc(true);
		}
	},
	out: function(event) {
		if (this.back) {
			this.replaceBgImg(false);
		} else {
			this.replaceSrc(false);
		}
	},
	replaceSrc: function(over) {
		this.img.src = (over ? this.img_over.src : this.img_out.src);
	},
	replaceBgImg: function(over) {
		this.img.style.backgroundImage = 'url(\'' + (over ? this.img_over.src : this.img_out.src) + '\')';
	}
}
// end: ImgRollover class }}}
// ImgChange class {{{
var ImgChange = Class.create();
ImgChange.prototype = {
	initialize: function(img_id, pid) {
		this.id = img_id;
		this.pid = pid;
		this.selected = null;
	},
	replace: function(img_num) {
		if (this.selected) {
			//Element.removeClassName(this.selected, 'selected');
		}
		var new_img = new Image();
		new_img.src = global_theme_path + 'obrazki/produkty/' + this.pid + '_big_' + img_num + '.png';
		//new_img.src = minImg.src.replace(/_small_/, '_big_');
		$E(this.id).src = new_img.src;
		//Element.addClassName(minImg, 'selected');
		//this.selected = minImg;
	}
}
// end: ImgRollover class }}}
// ListParser class {{{
var ListParser = Class.create();
ListParser.prototype = {
	initialize: function() { },
	get_items_arr: function(list) {
		Element.cleanWhitespace(list);
		return $c(list.childNodes);
	},
	bind_a_with_imgs: function(list) {
		list = $(list);
		var map = new Array;
		var parser = this;
		this.get_items_arr(list).each(function(item) {
			var map_elem;
			var nodeName = item.nodeName.toUpperCase();
			// is LI element
			if (item.nodeType == 1 && nodeName == 'LI') {
				map_elem = parser.parse_item(item);
				if (map_elem) {
					map.push(map_elem);
				}
			}
		});
		return map;
	},
	parse_item: function(item) {
		var wyn;
		var parser = this;
		$c(item.childNodes).each(function(child) {
			// is A element
			if (child.nodeType == 1 && child.nodeName.toUpperCase() == 'A') {
				wyn = parser._a_find_imgs(child);
			}
		});
		return wyn;
	},
	_a_find_imgs: function(elem) {
		var wyn = {a: elem};
		var found = false;
		$c(elem.childNodes).each(function(child) {
			// is IMG element
			if (child.nodeType == 1 && child.nodeName.toUpperCase() == 'IMG') {
				found = true;
				if (wyn.img1) {
					wyn.img2 = child;
				} else {
					wyn.img1 = child;
				}
			}
		});
		return (found ? wyn : null);
	}
}
// end: ListParser class }}}
// nowosc_rozszerzanie() {{{
function nowosc_rozszerzanie(new_id)
{
	if (nowosc_active) {
		return false;
	} else {
		nowosc_active = true;
	}

	if (nowosc_rozszerzona) {
		var old_id = nowosc_rozszerzona;
		var old_det_elem = $E('nowosc_' + old_id + '_det');
		var myEffect = new fx.Height(old_det_elem, {duration: fx_duration, transition: fx.linear, onComplete: function() {
			nowosc_rozszerzanie_2nd_part(new_id, old_id);
		}});
		myEffect.toggle(false);
	} else {
		nowosc_rozszerzanie_2nd_part(new_id);
	}
	return false;
} // end: nowosc_rozszerzanie() }}}
// nowosc_rozszerzanie_2nd_part() {{{
function nowosc_rozszerzanie_2nd_part(new_id, old_id) {
	if (old_id) {
 		var old_element = $E('nowosc_' + old_id);
		var old_det_elem = $E('nowosc_' + old_id + '_det');
		zmien_rozszerzona(old_element, false);
	}
	var new_element = $E('nowosc_' + new_id);
	var new_det_elem = $E('nowosc_' + new_id + '_det');
	zmien_rozszerzona(new_element, true);
	var myEffect = new fx.Height(new_det_elem, {duration: fx_duration, transition: fx.linear, onComplete: function() {
		nowosc_rozszerzona = new_id;
		nowosc_active = false;
	}});
	myEffect.toggle(true);
} // end: nowosc_rozszerzanie_2nd_part() }}}
// przecena_rozszerzanie() {{{
function przecena_rozszerzanie(new_id)
{
	if (przecena_active) {
		return false;
	} else {
		przecena_active = true;
	}
	
	if (przecena_rozszerzona) {
		var old_id = przecena_rozszerzona;
		var old_det_elem = $E('przecena_' + old_id + '_det');
		var myEffect = new fx.Height(old_det_elem, {duration: fx_duration, transition: fx.linear, onComplete: function() {
			przecena_rozszerzanie_2nd_part(new_id, old_id);
		}});
		myEffect.toggle(false);
	} else {
		przecena_rozszerzanie_2nd_part(new_id);
	}
	return false;
} // end: przecena_rozszerzanie() }}}
// przecena_rozszerzanie_2nd_part() {{{
function przecena_rozszerzanie_2nd_part(new_id, old_id) {
	if (old_id) {
 		var old_element = $E('przecena_' + old_id);
		var old_det_elem = $E('przecena_' + old_id + '_det');
		zmien_rozszerzona(old_element, false);
	}
	var new_element = $E('przecena_' + new_id);
	var new_det_elem = $E('przecena_' + new_id + '_det');
	zmien_rozszerzona(new_element, true);
	var myEffect = new fx.Height(new_det_elem, {duration: fx_duration, transition: fx.linear, onComplete: function() {
		przecena_rozszerzona = new_id;
		przecena_active = false;
	}});
	myEffect.toggle(true);
} // end: przecena_rozszerzanie_2nd_part() }}}
// zmien_rozszerzona() {{{
function zmien_rozszerzona(theElement, pokaz)
{
	if (pokaz) {
		theElement.className = theElement.className.replace(/ zwiniete/, ' rozszerzone');
	} else {
		theElement.className = theElement.className.replace(/ rozszerzone/, ' zwiniete');
	}
} // end: zmien_rozszerzona() }}}

// pg_onload() {{{
function pg_onload()
{
	// remember that function was invoked once
	if (arguments.callee.done) return;
	arguments.callee.done = true;
	/* I. obsługa pokazywania i ukrywania obrazków w menu z listą firm {{{ */
	var list = $E('pg_naglowek_firmy');			// menu z listą firm
	$c(list.childNodes).each(function(item) {
		// is LI element
		if (item.nodeType == 1 && item.nodeName.toUpperCase() == 'LI' && !Element.hasClassName(item, 'last')) {
			$c(item.childNodes).each(function(child) {
				// is A element
				if (child.nodeType == 1 && child.nodeName.toUpperCase() == 'A') {
					// first one, has different default bg-image
					if (Element.hasClassName(item, 'first')) {
						var src_out = global_theme_path + 'obrazki/menu_firmy_first_bg.png';
					} else {
						var src_out = global_theme_path + 'obrazki/menu_firma_bg.png';
					}
					var src_over = global_theme_path + 'obrazki/menu_firmy_' + child.childNodes[0].nodeValue + '_bg_hover.png';
					new ImgRollover(child, src_out, src_over, true);
				}
			});
		}
	});
	/* end: I. obsługa pokazywania i ukrywania obrazków w menu z listą firm }}} */
	/* II. obsługa podmieniania obrazków w liście kategorii  {{{ */
	var menu_kategorie_elem = $E('pg_kategorie');			// menu z listą kategorii
	var szukaj_button_fx = new ImgRollover('szukaj_button', global_theme_path + 'obrazki/szukaj_button.png', global_theme_path + 'obrazki/szukaj_button_hover.png', true);

	Element.cleanWhitespace(menu_kategorie_elem);
	Element.cleanWhitespace(menu_kategorie_elem.childNodes[0]);
	list = menu_kategorie_elem.childNodes[0];	// lista
	// zbuduj listę powiązanych ze sobą linków oraz obrazków, które mają się pojawiać i ukrywać onmouseover, onmouseout
	var menu_kategorie_map = (new ListParser()).bind_a_with_imgs(list);
	// dopisz do linków obsługę eventów onmouseover, onmouseout
	menu_kategorie_map.each(function(map_elem) {
		new ImgReplacer(map_elem.a, map_elem.img1, map_elem.img2);
	});
	/* end: II. obsługa podmieniania obrazków w liście kategorii }}} */
	/* rollover na przycisku "szukaj" w nagłówku */
	
	/* cień pod ceną w superpromocjach */
	var superpromocja_cena = $E('superpromocja_cena');
	var superpromocja_cena_cien = $E('superpromocja_cena_cien');
	if (superpromocja_cena && superpromocja_cena_cien) {
		superpromocja_cena_cien.innerHTML = superpromocja_cena.innerHTML;
	}
	/* preload'owanie innych obrazków */
	// tło w menu w stopce (hover)
	var stopa_menu_img_over = new Image();
	stopa_menu_img_over.src = global_theme_path + 'obrazki/pg_stopka_bg_dark_box.png';
	/* rozwinięcie pierwszej pozycji z promocji i nowości */
	var nowosc_first_arr = document.getElementsByClassName('nowosc_first');
	var przecena_first_arr = document.getElementsByClassName('przecena_first');
	if (nowosc_first_arr.length) {
		var nowosc_first = nowosc_first_arr[0];
		nowosc_rozszerzanie(nowosc_first.id.replace(/nowosc_/, ''));
	}
	if (przecena_first_arr.length) {
		var przecena_first = przecena_first_arr[0];
		przecena_rozszerzanie(przecena_first.id.replace(/przecena_/, ''));
	}
}
// end: pg_onload() }}}


// addEvent() {{{
/**
* Dodaj podaną funkcję jako obsługę podanego zdarzenia dla podanego obiektu.
*
* @param	Object		obj		Obiekt, którego zdarzenia mają być przechwytywane
* @param	String		type	Rodzaj zdarzenia (np. 'click', 'mouseover', ...)
* @param	Function	fn		Funkcja do obsługi zdarzenia
* @author	{@link http://riddle.jogger.pl/ Piotr 'Riddle' Petrus}
*/
function addEvent(obj, type, fn) {
	if (obj.addEventListener) {
		obj.addEventListener(type, fn, false);
	} else if (obj.attachEvent)
	{
		obj["e"+type+fn] = fn;
		obj[type+fn] = function() {obj["e"+type+fn](window.event); }
		obj.attachEvent("on"+type, obj[type+fn]);
	}
} // end: addEvent() }}}

// call pg_onload() after content loads
if (document.addEventListener) {
    document.addEventListener("DOMContentLoaded", pg_onload, false);
}
// ... or call pg_onload() after whole page loads
addEvent(window, "load", pg_onload);

