/*

OBSŁUGA APLIKACJI E-LEARNINGOWYCH

*/

(function(){

	var answers = {};
	var appOrder = {};
	var totalApps = 0;
	var answered = 0;
	var buttons;
	var ajaxSpr;
	var ajaxOdp;
	var finished = false;

	setAnswer = function(id, value){

		//alert(id+' => '+value);
		id = 'pyt_'+id;
		if(!answers[id] && answers[id] !== 0){
			answered++;
		}
		if(answers[id] != value){
			if(answered == totalApps){
				buttons[0].removeClass('disabled_button');
			}
		}
		answers[id] = value;
	}
	
	getAnswer = function(id){
		id = 'pyt_'+id;
		return answers[id];
	}
	
	function makeRadio(odpEl, el, id, key, odp, wypelniacz){
		odpEl.addEvent('click', function(){
			if(!finished){
				if(wypelniacz){
					wypelniacz.innerHTML = this.innerHTML;
				}
				odp.each(function(item){
					if(item !== this){
						item.removeClass('abcselected')
						item.addClass('abcoption');
					}
				});
				this.addClass('abcselected')
				this.removeClass('abcoption');
				setAnswer(id, key);
			}
		});
	}

	var applications = {

		'abctext': {

			'prepare': function(el, id){
				var odp = el.getElements('a.abcoption');
				var wypelniacz = el.getElement('.wypelniacz');
				odp.each(function(odpEl, key){
					makeRadio(odpEl, el, id, key, odp, wypelniacz);
				});
			}
		},

		'abcmtext': {

			'prepare': function(el, id){
				var zdania = el.getElements('div.zdanie');
				var total = 0;
				var wynik = [];
				zdania.each(function(zdanie, i){
					total++;
					wynik[i] = -1;
					var odp = zdanie.getElements('a.abcoption');
					var wypelniacz = zdanie.getElement('.wypelniacz');
					odp.each(function(odpEl, key){
						odpEl.addEvent('click', function(){
							if(!finished){
								if(wypelniacz){
									wypelniacz.innerHTML = this.innerHTML;
								}
								odp.each(function(item){
									if(item !== this){
										item.removeClass('abcselected')
										item.addClass('abcoption');
									}
								});
								this.addClass('abcselected')
								this.removeClass('abcoption');
								var wyslac = true;
								wynik[i] = key;
								for(var j=0; j<total; j++){
									if(wynik[j] == -1){
										wyslac = false;
									}
								}
								if(wyslac){
									setAnswer(id, wynik.join(':'));
								}
							}
						});
					});
				});
			}
		},

		'abcfoto2': {

			'prepare': function(el, id){
				var odp = el.getElements('a.abcoption');
				var wypelniacz = el.getElement('.wypelniacz');
				odp.each(function(odpEl, key){
					makeRadio(odpEl, el, id, key, odp, wypelniacz);
				});
			}
		},

		'abcfoto': {

			'prepare': function(el, id){
				var odp = el.getElements('a.abcoption');
				var wypelniacz = el.getElement('.wypelniacz');
				totalWidth = 0;
				odp.each(function(odpEl, key){
					totalWidth += odpEl.offsetWidth;
					makeRadio(odpEl, el, id, key, odp, wypelniacz);
				});
				if(totalWidth < 590){
					var left = Math.floor((590 - totalWidth)/2);
					odp.setStyles({
						'position': 'relative',
						'left': left+20
					});
				}
			}
		},

		'dopasuj': {

			'prepare': function(el, id){

				var listaBox = el.getElement('div.right_match');
				var prawe = listaBox.getElements('span');
				var wyniki = [];

				prawe.each(function(span, key){

					wyniki.push(key+0);
					var minTop = key * -40;
					var maxTop = (prawe.length-1)*40 + minTop;
				
					span.dragX = 0;
					span.dragY = 0;
					span.position = key+0;

					var myDrag = new Drag(span, {

						style: false,
						modifiers: {x: 'dragX', y: 'dragY'},

					    onSnap: function(span){
							if(!finished){
								span.addClass('drag');
							}
					    },
						onDrag: function(span){
							if(!finished){
								if(span.dragY < minTop){
									span.dragY = minTop;
								}else if(span.dragY > maxTop){
									span.dragY = maxTop;
								}
								span.setStyle('top', span.dragY);
							}
						},
					    onComplete: function(span){
							if(!finished){
								var change = Math.floor((span.dragY+10) / 40);
								if(change != 0){
								
									var temp = prawe[span.position+change].innerHTML;
									prawe[span.position+change].innerHTML = span.innerHTML;
									span.innerHTML = temp;

									var tempWynik = wyniki[span.position+change];
									wyniki[span.position+change] = wyniki[span.position];
									wyniki[span.position] = tempWynik;

									setAnswer(id, wyniki.join(':'));
								}
								span.dragX = 0;
								span.dragY = 0;
								span.setStyle('top', span.dragY);
						        span.removeClass('drag');
							}
					    }
					});

				});
				setAnswer(id, wyniki.join(':'));
			}
		},
		
		'dopasuj2': {

			'prepare': function(el, id){
				var listaBox = el.getElement('div.bottom_match');
				var bottom = listaBox.getElements('span');
				var wyniki = [];

				bottom.each(function(span, key){

					wyniki.push(key+0);
					var minLeft = key * -196;
					var maxLeft = (bottom.length-1)*196 + minLeft;

					span.dragX = 0;
					span.dragY = 0;
					span.position = key+0;

					var myDrag = new Drag(span, {

						style: false,
						modifiers: {x: 'dragX', y: 'dragY'},

					    onSnap: function(span){
							if(!finished){
								span.addClass('drag');
							}
					    },
						onDrag: function(span){
							if(!finished){
								if(span.dragX < minLeft){
									span.dragX = minLeft;
								}else if(span.dragX > maxLeft){
									span.dragX = maxLeft;
								}
								span.setStyle('left', span.dragX);
							}
						},
					    onComplete: function(span){
							if(!finished){
								var change = Math.floor((span.dragX+30) / 196);
								if(change != 0){
								
									var temp = bottom[span.position+change].innerHTML;
									bottom[span.position+change].innerHTML = span.innerHTML;
									span.innerHTML = temp;

									var tempWynik = wyniki[span.position+change];
									wyniki[span.position+change] = wyniki[span.position];
									wyniki[span.position] = tempWynik;

									setAnswer(id, wyniki.join(':'));
								}
								span.dragX = 0;
								span.dragY = 0;
								span.setStyle('left', span.dragX);
						        span.removeClass('drag');
							}
					    }
					});
					setAnswer(id, wyniki.join(':'));
				});
			}
		},

		'sound1': {

			'prepare': function(el, id){
				var input = el.getElement('input');
				input.value = '';

				input.addEvent('keypress', function(){
					if(!finished){
						setAnswer(id, this.value);
					}else{
						return false;
					}
				});
				input.addEvent('change', function(){
					if(!finished){
						setAnswer(id, this.value);
					}else{
						this.value = getAnswer(id);
					}
				});
			},

			'sound': function(el, id){
				var button = el.getElement('a.play_button');
				var mp3url = button.href;
				var playing = false;

				var mySound = soundManager.createSound({
					id: id+'_mp3',
					url: mp3url,
					onfinish: function(){
						button.removeClass('play_gray');
						playing = false;
					}
				});

				button.addEvent('click', function(){
					if(!playing){
						playing = true;
						this.addClass('play_gray');
						this.blur();
						if(!mySound.loaded){
							mySound.load({
								stream: false,
								onfinish: function(){
									button.removeClass('play_gray');
									playing = false;
								},
								onload: function(){
									this.play();
								}
							});
						}else{
							mySound.play();
						}
					}
					return false;
				});
			}
		},

		'sound2': {

			'prepare': function(el, id){
				var spany = el.getElements('div.words_to_check span');
				var wyniki = [];

				spany.each(function(span, key){

					wyniki.push(0);

					span.addEvent('click', function(){
						if(!finished){
							if(this.hasClass('checked')){
								this.removeClass('checked');
								wyniki[key] = 0;
							}else{
								this.addClass('checked');
								wyniki[key] = 1;
							}
							setAnswer(id, wyniki.join(':'));
						}
					});
				});
			},

			'sound': function(el, id){
				var button = el.getElement('a.play_button');
				var mp3url = button.href;
				var playing = false;

				var mySound = soundManager.createSound({
					id: id+'_mp3',
					url: mp3url,
					onfinish: function(){
						button.removeClass('play_gray');
						playing = false;
					}
				});

				button.addEvent('click', function(){
					if(!playing){
						playing = true;
						this.addClass('play_gray');
						this.blur();
						if(!mySound.loaded){
							mySound.load({
								stream: false,
								onfinish: function(){
									button.removeClass('play_gray');
									playing = false;
								},
								onload: function(){
									this.play();
								}
							});
						}else{
							mySound.play();
						}
					}
					return false;
				});
			}
		},

		'sound3': {

			'prepare': function(el, id){
				var spany = el.getElements('div.pick_foto span');
				var selected = false;

				spany.each(function(span, key){
					span.addEvent('click', function(){
						if(!finished){
							if(selected){
								selected.removeClass('selected');
							}
							this.addClass('selected');
							selected = this;
							setAnswer(id, key);
						}
					});
				});
			},

			'sound': function(el, id){
				var button = el.getElement('a.play_button');
				var mp3url = button.href;
				var playing = false;

				var mySound = soundManager.createSound({
					id: id+'_mp3',
					url: mp3url,
					onfinish: function(){
						button.removeClass('play_gray');
						playing = false;
					}
				});

				button.addEvent('click', function(){
					if(!playing){
						playing = true;
						this.addClass('play_gray');
						this.blur();
						if(!mySound.loaded){
							mySound.load({
								stream: false,
								onfinish: function(){
									button.removeClass('play_gray');
									playing = false;
								},
								onload: function(){
									this.play();
								}
							});
						}else{
							mySound.play();
						}
					}
					return false;
				});
			}
		},

		'fiszki': {

			'prepare': function(el, id){

				var timer = 0;
				var play = el.getElement('a.play_fiszki');
				var pause = el.getElement('a.pause_fiszki');
				var czasEl = el.getElement('strong.czas');
				var texts = el.getElements('div.fiszki_text');
				var inputFrames = el.getElements('div.input_frame');
				var inputs = el.getElements('div.input_frame input');
				var czas = Number(play.rel);
				var playing = false;

				var fiszkiImg = el.getElements('div.fiszki_img');
				var fiszkiFx = new Fx.Elements(fiszkiImg, {'chain': 'cancel', 'duration': 1000});
				var fiszkiFxOptions = {}
				
				var wyniki = [];
				var total = 0;

				fiszkiImg.each(function(el, key){
					wyniki[key] = '';
					total++;
					fiszkiFxOptions[key+''] = {'opacity': [0, 1]};
				});

				inputs.each(function(el){
					el.value = '';
				});

				function int2digits(num){
					num = Number(num);
					if(num == 0){
						num = '00';
					}else if(num < 10){
						num = '0'+num;
					}
					return num;
				}

				function czas2string(czas){
					var minuty = int2digits(Math.floor(czas/60));
					var sekundy = int2digits(czas%60);
					return minuty+':'+sekundy;
				}

				function tick(){
					czas--;
					czasEl.innerHTML = czas2string(czas);
					if(czas > 0){
						timer = setTimeout(tick, 1000);
					}else if(czas == 0){
						play.addClass('play_gray');
						pause.addClass('pause_gray');
						texts.setStyle('display', 'none');
						inputFrames.setStyle('display', 'block');
					}
				}

				play.addEvent('click', function(){
					if(!playing && czas > 0){
						timer = setTimeout(tick, 1000);
						playing = true;
						play.addClass('play_gray');
						pause.removeClass('pause_gray');
						fiszkiFx.start(fiszkiFxOptions);
						texts.each(function(el){
							el.innerHTML = el.title;
						});
					}
				});

				pause.addEvent('click', function(){
					if(playing && czas > 0){
						playing = false;
						clearTimeout(timer);
						play.removeClass('play_gray');
						pause.addClass('pause_gray');
						fiszkiFx.cancel();
						fiszkiImg.setStyle('visibility', 'hidden');
						texts.each(function(el){
							el.innerHTML = '?';
						});
					}
				});
				
				inputs.each(function(el, key){
				
					var event = function(){
						if(!finished){
							wyniki[key] = this.value;
							var wypelnione = true;
							for(var i=0; i<total; i++){
								if(wyniki[i] == ''){
									wypelnione = false;
								}
							}
							if(wypelnione){
								setAnswer(id, wyniki.join(':::'));
							}
						}else{
							return false;
						}
					}

					el.addEvents({'keypress': event, 'change': event});
				});
			}
		},

		'szukanie': {

			'prepare': function(el, id){

				var inputs = el.getElements('input');
				var wyniki = [];
				var total = 0;

				inputs.each(function(el, key){

					el.value = '';
					wyniki[key] = '';
					total++;

					var event = function(){
						if(!finished){
							wyniki[key] = this.value;
							var wypelnione = false;
							for(var i=0; i<total; i++){
								if(wyniki[i] != ''){
									wypelnione = true;
								}
							}
							if(wypelnione){
								setAnswer(id, wyniki.join(':::'));
							}
						}else{
							return false;
						}
					}
					el.addEvents({'keypress': event, 'change': event});
				});
			}
		},

		'wstaw': {

			'prepare': function(el, id){

				var wyniki = [];
				var total = 0;

				var inputs = el.getElements('span.wypelniacz input');
				var wypelniacze = el.getElements('span.wypelniacz');
				var podpowiedzi = el.getElement('div.podpowiedzi').innerHTML.split(':::');

				wypelniacze.each(function(wyp, key){

					total++;
					wyniki[key] = '';

					if(podpowiedzi[key] != ''){
						var podp = new Element('span');
						podp.innerHTML = ' ( <span style="font-weight: normal;">'+podpowiedzi[key]+'</span> )';
						podp.inject(wyp, 'after');
					}
				});
				$$('.paper_bottom')[0].setStyle('bottom', -5);

				inputs.each(function(el, key){

					el.value = '';
					var event = function(){
						if(!finished){
							wyniki[key] = this.value;
							var wypelnione = true;
							for(var i=0; i<total; i++){
								if(wyniki[i] == ''){
									wypelnione = false;
								}
							}
							if(wypelnione){
								setAnswer(id, wyniki.join(':::'));
							}
						}else{
							return false;
						}
					}
					el.addEvents({'keypress': event, 'keyup': event, 'change': event});
				});
			}
		},
		
		'wybierz': {
			'prepare': function(el, id){},
			'select': function(el, id){

				var hidden = el.getElements('input.select_value');
				var wyniki = [];
				var total = 0;

				hidden.each(function(inpt, key){

					total++;
					wyniki[key] = '';

					inpt.addEvent('change', function(){
						if(!finished){
							wyniki[key] = this.value;
							var wypelnione = true;
							for(var i=0; i<total; i++){
								if(wyniki[i] == ''){
									wypelnione = false;
								}
							}
							if(wypelnione){
								setAnswer(id, wyniki.join(':'));
							}
						}
					});
				});
			}
		},

		'wybierz2': {
			'prepare': function(el, id){},
			'select': function(el, id){

				var hidden = el.getElements('input.select_value');
				var wyniki = [];
				var total = 0;

				hidden.each(function(inpt, key){

					total++;
					wyniki[key] = '';

					inpt.addEvent('change', function(){
						if(!finished){
							wyniki[key] = this.value;
							var wypelnione = true;
							for(var i=0; i<total; i++){
								if(wyniki[i] == ''){
									wypelnione = false;
								}
							}
							if(wypelnione){
								setAnswer(id, wyniki.join(':'));
							}
						}
					});
				});
			}
		},

		'popraw': {

			'prepare': function(el, id){

				var wynik = [];
				var org = []
				var divy = el.getElements('div.popraw div.word');
				var inputy = [];
				var dymki = [];
				var slowa = [];
				var total = 0;
				
				function schowaj(){
					for(var i=0; i<total; i++){
						if(inputy[i].value == ''){
							dymki[i].setStyle('display', 'none');
							slowa[i].setStyles({
								'text-decoration': 'none',
								'color': '#555'
							});
						}else{
							slowa[i].setStyles({
								'text-decoration': 'line-through',
								'color': '#a00'
							});
						}
					}
				}

				divy.each(function(div, key){

					total++;

					var lewy = new Element('span', {'class': 'left'});
					var prawy = new Element('span', {'class': 'right'});
					var dymek = new Element('span', {'class': 'cloud'});
					dymki[key] = dymek;
					inputy[key] = new Element('input', {'type': 'text'});
					dymek.appendChild(inputy[key]);
					dymek.setStyles({
						'display': 'none',
						'left': Math.floor((div.offsetWidth - 150)/2)
					});

					slowa[key] = $(div.firstChild);
					org[key] = wynik[key] = slowa[key].innerHTML;
					div.appendChild(lewy);
					div.appendChild(prawy);
					div.appendChild(dymek);

					div.addEvent('click', function(){
						if(!finished){
							schowaj();
							for(var j=0; j<total; j++){
								dymki[j].setStyle('z-index', 2);
							}
							dymek.setStyle('display', 'block');
							dymek.setStyle('z-index', 3);
							inputy[key].focus();
						}
					});
					
					inputy[key].addEvents({
						'blur': function(){
							schowaj();
						},
						'change': function(){
							if(!finished){
								var wartosc = this.value.replace(' ', '');
								if(wartosc == ''){
									wynik[key] = org[key];
								}else{
									wynik[key] = wartosc;
								}
								setAnswer(id, wynik.join(' '));
							}
						}
					});
				});

			}
		},

		'memory': {

			'prepare': function(el, id){

				var odslona = -1;
				var odsloniety = false;
				var czekaj = false;

				var total = 0;
				var done = 0;
				var timer = 0;
				var play = el.getElement('a.play_fiszki');
				var pause = el.getElement('a.pause_fiszki');
				var czasEl = el.getElement('strong.czas');
				var boxy = el.getElements('div.memory_box');
				var czas = Number(play.rel);
				var playing = false;

				var fiszkiImg = el.getElements('div.memory_img');
				var fiszkiFx = new Fx.Elements(fiszkiImg, {'chain': 'cancel', 'duration': 1000});
				var fiszkiFxOptions = {}

				var wyniki = [];
				var total = 0;

				fiszkiImg.each(function(el, key){
					wyniki[key] = '';
					total++;
					fiszkiFxOptions[key+''] = {'opacity': [0, 1]};
				});

				function int2digits(num){
					num = Number(num);
					if(num == 0){
						num = '00';
					}else if(num < 10){
						num = '0'+num;
					}
					return num;
				}

				boxy.each(function(el, key){
					el.imgId = Number(el.title);
					el.title = '';
					el.key = key+0;

					el.addEvent('click', function(){
						if(czas == 0 && !finished && !czekaj){
							if(odsloniety != this && !el.hasClass('disabled')){
								fiszkiImg[key].setStyles({
									'visibility': 'visible',
									'opacity': 1
								});
								if(odslona === -1){
									odslona = this.imgId;
									odsloniety = this;
								}else{
									czekaj = true;
									setTimeout(function(){

										if(odsloniety.imgId == el.imgId){
											odsloniety.tween('opacity', 1, 0.2);
											el.tween('opacity', 1, 0.2);
											odsloniety.addClass('disabled');
											el.addClass('disabled');
											done+=2;
											if(done==total){
												setAnswer(id, '1');
											}
										}else{
											fiszkiImg[odsloniety.key].setStyle('visibility', 'hidden');
											fiszkiImg[key].setStyle('visibility', 'hidden');
										}
										odslona = -1;
										czekaj = false;
										odsloniety = false;
									}, 1000);
								}
							}
						}
					});
				});

				function czas2string(czas){
					var minuty = int2digits(Math.floor(czas/60));
					var sekundy = int2digits(czas%60);
					return minuty+':'+sekundy;
				}

				function tick(){
					czas--;
					czasEl.innerHTML = czas2string(czas);
					if(czas > 0){
						timer = setTimeout(tick, 1000);
					}else if(czas == 0){
						play.addClass('play_gray');
						pause.addClass('pause_gray');
						fiszkiImg.setStyle('visibility', 'hidden');
					}
				}

				play.addEvent('click', function(){
					if(!playing && czas > 0){
						timer = setTimeout(tick, 1000);
						playing = true;
						play.addClass('play_gray');
						pause.removeClass('pause_gray');
						fiszkiFx.start(fiszkiFxOptions);
					}
				});

				pause.addEvent('click', function(){
					if(playing && czas > 0){
						playing = false;
						clearTimeout(timer);
						play.removeClass('play_gray');
						pause.addClass('pause_gray');
						fiszkiFx.cancel();
						fiszkiImg.setStyle('visibility', 'hidden');
					}
				});
			}
		},

		'kolejnosc': {

			'prepare': function(el, id){

				var dragi = el.getElements('div.dragword');
				var dropy = el.getElements('div.dropbox');
				
				var dropdim = []
				var temp;
				var wynik = [];

				var total = 0;

				function wypusc(drag_id){
					dragi[drag_id].setStyle('visibility', 'visible');
				}

				dropy.each(function(drop, key){

					drop.innerHTML = '<span class="numer">'+(key+1)+'</span>';
					wynik[key] = '';
					drop.cont = -1;
					total++;
					temp = drop.getPosition(el);

					dropdim[key] = {
						'startX': temp.x,
						'startY': temp.y,
						'endX': temp.x + drop.offsetWidth,
						'endY': temp.y + drop.offsetHeight
					}

					drop.addEvent('click', function(){
						if(!finished && drop.cont != -1){
							wypusc(drop.cont);
							drop.cont = -1;
							drop.innerHTML = '<span class="numer">'+(key+1)+'</span>';
						}
					});

				});

				dragi.each(function(drag, key){

					drag.dragX = 0;
					drag.dragY = 0;

					var myDrag = new Drag(drag, {

						style: false,
						modifiers: {x: 'dragX', y: 'dragY'},

						onSnap: function(drag){
							if(!finished){
								drag.setStyles({
									'position': 'relative',
									'z-index': 5
								});
							}
						},

						onDrag: function(drag){
							if(!finished){
								drag.setStyles({
									'left': drag.dragX,
									'top': drag.dragY
								});
							}
						},

						onComplete: function(drag){
							if(!finished){
								var pozycja = drag.getPosition(el);

								pozycja.y += 12;
								pozycja.x += Math.floor(drag.offsetWidth/2);

								drag.dragX = 0;
								drag.dragY = 0;
								drag.setStyles({
									'left': drag.dragX,
									'top': drag.dragY
								});

								var ustawiony = -1;
								for(var i=0; i<total; i++){
									if(pozycja.x > dropdim[i].startX && pozycja.x < dropdim[i].endX && pozycja.y > dropdim[i].startY && pozycja.y < dropdim[i].endY){
										ustawiony = i+0;
									}
								}
								if(ustawiony != -1){
									drag.setStyle('visibility', 'hidden');
									if(dropy[ustawiony].cont != -1){
										wypusc(dropy[ustawiony].cont);
									}
									wynik[ustawiony] = drag.innerHTML;
									dropy[ustawiony].innerHTML = '<span class="numer">'+(ustawiony+1)+'</span>'+drag.innerHTML;
									dropy[ustawiony].cont = key;

									var wszystkie = true;
									dropy.each(function(drop){
										if(drop.cont == -1){
											wszystkie = false;
										}
									});
									if(wszystkie){
										setAnswer(id, wynik.join(':::'));
									}
								}
							}
						}
					});
				});
			}
		},

		'dopasuj3': {

			'prepare': function(el, id){

				var dragi = el.getElements('div.dragword');
				var dropy = el.getElements('div.dropbox');
				
				var dropdim = []
				var temp;
				var wynik = [];

				var total = 0;

				function wypusc(drag_id){
					dragi[drag_id].setStyle('visibility', 'visible');
				}

				dropy.each(function(drop, key){

					wynik[key] = '';
					drop.cont = -1;
					total++;
					temp = drop.getPosition(el);

					dropdim[key] = {
						'startX': temp.x,
						'startY': temp.y,
						'endX': temp.x + drop.offsetWidth,
						'endY': temp.y + drop.offsetHeight
					}

					drop.addEvent('click', function(){
						if(!finished && drop.cont != -1){
							wypusc(drop.cont);
							drop.cont = -1;
							drop.innerHTML = '';
						}
					});

				});

				dragi.each(function(drag, key){

					drag.dragX = 0;
					drag.dragY = 0;
					drag.timer = 0;
					
					drag.addEvents({
						'getDimensions': function(){
							if(Browser.Engine.trident){
								this.wClientHeight = window.getHeight();
								this.wClientScrollTop = document.documentElement.scrollTop;
							}else{
								this.wClientHeight = window.innerHeight;
								this.wClientScrollTop = window.getScrollTop();
							}
						},
						'scrollUp': function(){
							this.fireEvent('getDimensions');
							window.scrollTo(0, this.wClientScrollTop-5);
						},
						'scrollDown': function(){
							this.fireEvent('getDimensions');
							window.scrollTo(0, this.wClientScrollTop+5);
						}
					});

					var myDrag = new Drag(drag, {

						style: false,
						modifiers: {x: 'dragX', y: 'dragY'},

						onSnap: function(drag){
							if(!finished){
								drag.fireEvent('getDimensions');
								var pozycja = drag.getPosition();
								drag.setStyles({
									'position': 'relative',
									'z-index': 5
								});
								drag.startX = pozycja.x;
								drag.startY = pozycja.y;
							}
						},

						onDrag: function(drag){
							if(!finished){
								drag.setStyles({
									'left': drag.dragX,
									'top': drag.dragY
								});
								var scrollPosition = (drag.startY + drag.dragY) - drag.wClientScrollTop;
								if(scrollPosition <= 10){
									drag.fireEvent('scrollUp');
								}else if(scrollPosition >= drag.wClientHeight-30){
									drag.fireEvent('scrollDown');
								}
							}
						},

						onComplete: function(drag){
							if(!finished){
								var pozycja = drag.getPosition(el);

								pozycja.y += 12;
								pozycja.x += Math.floor(drag.offsetWidth/2);

								drag.dragX = 0;
								drag.dragY = 0;
								drag.setStyles({
									'left': drag.dragX,
									'top': drag.dragY
								});

								var ustawiony = -1;
								for(var i=0; i<total; i++){
									if(pozycja.x > dropdim[i].startX && pozycja.x < dropdim[i].endX && pozycja.y > dropdim[i].startY && pozycja.y < dropdim[i].endY){
										ustawiony = i+0;
									}
								}
								if(ustawiony != -1){
									drag.setStyle('visibility', 'hidden');
									if(dropy[ustawiony].cont != -1){
										wypusc(dropy[ustawiony].cont);
									}
									dropy[ustawiony].innerHTML = wynik[ustawiony] = drag.innerHTML;
									dropy[ustawiony].cont = key;

									var wszystkie = true;
									dropy.each(function(drop){
										if(drop.cont == -1){
											wszystkie = false;
										}
									});
									if(wszystkie){
										setAnswer(id, wynik.join(':::'));
									}
								}
							}
						}
					});
				});
			}
		}
	}

	window.addEvent('domready', function(){
	
		var testId = window.location.href.split('/')
		var dzial = testId[testId.length-3];
		testId = testId[testId.length-1].split('.')[0];

		ajaxSpr = new Request({
			url: '/'+dzial+'/sprawdz/'+testId+'.html',
			method: 'post',
			onComplete: function(response){

				response = (eval('('+response+')'));

				var wynik = 0;
				var wynikNa = 0;
				var el;

				
				//results.each(function(el, key){
				for(i in response){

					res = response[i].split('/');
					res[0] = Number(res[0]);
					res[1] = Number(res[1]);
					wynikNa += res[1];
					el = results[appOrder[i]];

					if(res[0] == 1 && res[1] == 1){
						wynik++;
						el.className = 'result result_ok';
					}else if(res[0] == 0 && res[1] == 1){
						el.className = 'result result_blad';
					}else{
						wynik += res[0];
						el.setStyle('font-weight', 'bold');
						el.innerHTML = res[0]+' / '+res[1];
					}
				}
				//});
				var rateVal = wynik / wynikNa;
				if(rateVal > 0.67){
					var rate = "high";
				}else if(rateVal > 0.33){
					var rate = "med";
				}else{
					var rate = "low";
				}
				var wynikBox = document.getElement('div.smile_wynik');
				wynikBox.setStyle('visibility', 'hidden');
				wynikBox.addClass('smile_wynik_'+rate);
				wynikBox.innerHTML = "Twój wynik: "+wynik+" / "+wynikNa;
				wynikBox.tween('opacity', 0, 1);
				buttons[1].removeClass('disabled_button');
				buttons[1].addEvent('click', function(){
					if(this.hasClass('disabled_button')){
						return false;
					}
					ajaxOdp.send();
					this.addClass('disabed_button');
				});
			}
		});

		ajaxOdp = new Request({
			url: '/'+dzial+'/odpowiedzi/'+testId+'.html',
			method: 'post',
			onComplete: function(response){

				response = (eval('('+response+')'));
				var temp;
				for(var i=0; i<response.length; i++){
					temp = response[i];
					$('odpText_' + temp.id).innerHTML = temp.odpText;
					//alert($('odpCorrect_'+temp.id).tagName+' => '+temp.odpCorrect);
					$('odpCorrect_' + temp.id).innerHTML = temp.odpCorrect;
				}
				document.getElement('div.sub_paper_box').setStyle('display', 'block');
				window.location.hash = '#odpowiedzi';

			}
		});
		
		buttons = $$('div.paper_footer a.button');
		results = $$('h3 div.result');
		
		var ajaxFav = new Request({
			url: '/'+dzial+'/ulubione/'+testId+'.html',
			method: 'get', 
			onComplete: function(response){
				buttons[2].innerHTML = response;
				/*if (buttons[2].innerHTML == '+ Ulubione') {
					buttons[2].innerHTML = '- Ulubione';
				} else {
					buttons[2].innerHTML = '+ Ulubione';
				}*/
			}
		});
		
		buttons[0].addEvent('click', function(){
			if(this.hasClass('disabled_button')){
				return false;
			}
			finished = true;
			this.addClass('disabled_button');

			ajaxSpr.send(Hash.toQueryString(answers));
		});
		
		buttons[2].addEvent('click', function(){
			if(this.hasClass('disabled_button')){
				return false;
			}
			ajaxFav.send();
		});

		var apps = $$('div.application');

		totalApps = apps.length;
		apps.each(function(el, key){

			var application = el.className.split('_')[1]
			var id = el.id.split('_')[1];
			appOrder['odp_'+id] = key+0;
			applications[application].prepare(el, id);

		});

	});

	window.addEvent('soundmanager', function(){

		$$('div.application').each(function(el, key){

			var application = el.className.split('_')[1]
			var id = el.id.split('_')[1];
			if(applications[application].sound){
				applications[application].sound(el, id);
			}

		});
	});

	window.addEvent('selectready', function(){

		$$('div.application').each(function(el, key){

			var application = el.className.split('_')[1]
			var id = el.id.split('_')[1];
			if(applications[application].select){
				applications[application].select(el, id);
			}

		});
	});

})();

window.addEvent('keydown', function(event){
	var event = new Event(event);
	if(event.key === 'tab'){ return false; }
});


window.onkeypress = function(event){
	var ctrl = event.ctrlKey;
	var event = new Event(event);
	var klawisz = event.key;
	if(klawisz == 'c' && ctrl){
		return false;
	}
}
