var topMenu = new Class({
	
	initialize: function(element){
		
		$(element).getElements('div[id^=topNode]').each(function(el, i){
			var n = el.getProperty('id').replace(/[^0-9]+/, '');
			el.addEvent('mouseover', function(e){
				el.getChildren().each(function(item){
					if(item.getProperty('class') == 'node') {
						item.setStyle('display', 'block');
						if(n > 0) {
							el.setStyle('position', 'relative');
							item.setStyles({
								position: 'absolute',
								top: '0px',
								left: '250px'
							});
						}
					}
				});
				if(n>0) {
					el.setStyle('background-color', '#D7D7D7');
				}
			});
			el.addEvent('mouseout', function(e){
				el.getChildren().each(function(item){
					if(item.getProperty('class') == 'node') {
						item.setStyle('display', 'none');
					}
				});
				el.setStyle('background-color', '');
			});
			if(el.getElement('a[rel=node]')) {
				el.getElement('a[rel=node]').addEvent('click', function(e){
					if(this.getProperty('href')=='') {
						new Event(e).stop();
					}
				});
			}
		});
		
	}
	
});

var leftMenu = new Class({
	
	initialize: function(){
		
		if($('leftMenu')) {
			$('leftMenu').getElements('a[rel^=leftNode]').each(function(el, i){
				var n = el.getProperty('rel').substr(8);
				el.addEvent('click', function(e){
					if(this.getProperty('href')=='') {
						new Event(e).stop();
						$('leftNode'+n).setStyle('display', $('leftNode'+n).getStyle('display') == 'none' ? 'block' : 'none');
					}
				});
				el.getParent().addEvent('mouseover', function(){
					this.setStyle('background-color', '#D7D7D7');
				});
				el.getParent().addEvent('mouseout', function(){
					this.setStyle('background-color', '');
				});
			});
		}
		
	}
	
});

window.addEvent('domready', function(){
	
	$ES('a').each(function(el){
		el.addEvent('focus', function(){
			this.blur();
		});
	});
	
	$('top').getElements('a[rel=stop]').each(function(el){
		el.addEvent('click', function(e){
			new Event(e).stop();
		});
	});
	
	$('top').getElements('a[rel=openCalc]').each(function(el){
		el.addEvent('click', function(e){
			$('calcOff').setStyle('display', 'block');
			$('calcBody').setStyle('display', 'block');
			$('banner').setStyle('display', 'none');
		});
	$ES('a[rel=openCalc]').addEvent('click', function(e){
			$('calcOff').setStyle('display', 'block');
			$('calcBody').setStyle('display', 'block');
			$('banner').setStyle('display', 'none');
		});
	});
	
	$ES('a[rel=closeCalc]').addEvent('click', function(e){
		new Event(e).stop();
		$('calcOff').setStyle('display', 'none');
		$('calcBody').setStyle('display', 'none');
		$('banner').setStyle('display', 'block');
		if($('calcResults')) {
			$('calcResults').empty();
		}
		showAllPodkl();
		showAllWierzch();
		$('calcBody').getElements('select').each(function(el){
			el.getElement('option').selected = true;
		});
		$('calcBody').getElements('input[type=text]').each(function(el){
			el.value = '';
		});
		$('calcBody').getElements('input[type=checkbox]').each(function(el){
			if(!el.getProperty('disabled')) {
				el.checked = false;
			}
		});
	});
	
	// papy wg rodzaju dachu
	var papyDrewnPodkl = [2,3,8,14,15,27,28];
	var papyDrewnWierzch = [1,4,5,6,7,9,12,13,25,26];
	// papy wg liczby warstw
	var papyJednowaPodkl = [];
	var papyJednowaWierzch = [1,4];
	
	// pokazuje wybrane opcje wybranej listy options
	var showOptions = function(item, list) {
		$(item).setProperty('disabled', list.length>0 ? '' : 'disabled');
		$(item).getElement('option[value=0]').setText(list.length>0 ? ' - wybierz - ' : ' - nie dotyczy - ');
		if(list.length==0) {
			$(item).getElement('option[value=0]').setProperty('selected', 'selected');
		}
		$(item).getElements('option').each(function(el){
			var val = parseInt(el.getProperty('value'));
			if(val > 0 && !list.contains(val)) {
				el.setStyles({
					display: 'none', //nie działa w IE :/
					color: '#d0d0d0'
				});
				el.setProperty('disabled', 'disabled');
			}
		});
	}
	
	var showAllPodkl = function() {
		$('papa_podkl').setProperty('disabled', '');
		$('papa_podkl').getElement('option[value=0]').setText(' - wybierz - ');
		$('papa_podkl').getElements('option').each(function(el){
			el.setStyles({
				display: '',
				color: ''
			});
			el.setProperty('disabled', '');
		});
	}
	var showAllWierzch = function() {
		$('papa_wierzch').getElements('option').each(function(el){
			el.setStyles({
				display: '',
				color: ''
			});
			el.setProperty('disabled', '');
		});
	}
	
	var resetDisabled = function(item) {
		var val = $(item).getValue();
		var el = $(item).getElement('option[value='+val+']');
		if(el.disabled) {
			$(item).getElement('option[value=0]').selected=true;
		}
	}
	
	var checkDach = function(){
		var v = $('dach').getValue();
		if(v > 1) {
			// drewno, blacha
			showOptions('papa_podkl', papyDrewnPodkl);
			showOptions('papa_wierzch', papyDrewnWierzch);
			resetDisabled('papa_podkl');
			resetDisabled('papa_wierzch');
		} else {
			// beton lub nic
			showAllPodkl();
			showAllWierzch();
		}
	}
	var checkWarstwy = function(){
		var v = $('warstwy').getValue();
		if(v == 1) {
			// jedna warstwa
			showOptions('papa_podkl', papyJednowaPodkl);
			showOptions('papa_wierzch', papyJednowaWierzch);
			resetDisabled('papa_wierzch');
		} else {
			// dwie warstwy lub nic
			showAllPodkl();
			showAllWierzch();
			checkDach();
		}
	}
	
	$('dach').addEvent('change', function(){
		checkDach();
	});
	$('warstwy').addEvent('change', function(){
		checkWarstwy();
	});
	
	$('papa_podkl').addEvent('change', function(){
		resetDisabled('papa_podkl');
	});
	$('papa_wierzch').addEvent('change', function(){
		resetDisabled('papa_wierzch');
	});
	
	$('calculator').addEvent('submit', function(e){
		var error = '';
		var curr;
		var dach = $('dach').getValue();
		var warstwy = $('warstwy').getValue();
		var papa_podkl = $('papa_podkl').getValue();
		var papa_wierzch = $('papa_wierzch').getValue();
		var metraz = parseFloat($('metraz').getValue().trim());
		var dodatkowe = $('dodatkowe').getValue();
		if(dach == 0) {
			error = 'Wybierz konstrukcję dachu.';
			curr = 'dach';
		} else if(warstwy == 0) {
			error = 'Wybierz liczbę warstw.';
			curr = 'warstwy';
		} else if(papa_podkl == 0 && warstwy>1) {
			error = 'Wybierz rodzaj papy podkładowej.';
			curr = 'papa_podkl';
		} else if(papa_wierzch == 0) {
			error = 'Wybierz rodzaj papy wierzchniego krycia.';
			curr = 'papa_wierzch';
		} else if(isNaN(metraz) || metraz <= 0) {
			error = 'Podaj metraż dachu.';
			curr = 'metraz';
		}
		if(error != '') {
			new Event(e).stop();
			alert(error);
			$(curr).focus();
		}
	});
	
	if($('calcPrintBtn')) {
		$('calcPrintBtn').addEvent('click', function(e){
			new Event(e).stop();
			window.open('kalkulator.html', 'calcResultsWin');
		});
	}
	
	$ES('a[rel^=zoomImage]').each(function(el, i){
		el.addEvent('click', function(e){
			new Event(e).stop();
			var a = this.getProperty('rel').split(':');
			var imgW = a[1];
			var imgH = a[2];
			var imgSrc = this.getProperty('href');
			$('imageZoom').setStyles({
				position: 'absolute',
				top: 0, left: 0,
				width: imgW+'px', height: imgH+'px', 'z-index': 100,
				cursor: 'pointer',
				border: 'solid 1px #2B3D7F',
				'text-align': 'center',
				background: 'url(img/ajax-loading.gif) no-repeat white center center'
			});
			$('imageZoom').setOpacity(1);
			$('imageZoom').setHTML('<img src="'+imgSrc+'"/>');
			$('imageZoom').addEvent('click', function(e){
				this.empty();
				this.setOpacity(0)
			});
		});
	});
	
	new topMenu('topMenuProds');
	new topMenu('topMenuPages1');
	new topMenu('topMenuPages2');
	new topMenu('topMenuPages3');
	new topMenu('topMenuPages4');
	new leftMenu();
	
});
