function externalLinks() {
	if (!document.getElementsByTagName) return;
	var anchors = document.getElementsByTagName("a");
	for (var i=0; i<anchors.length; i++) {
		var anchor = anchors[i];
		if (anchor.getAttribute("href") && anchor.getAttribute("rel") == "external")
			anchor.target = "_blank";
	}
}
window.onload = externalLinks;
var last_search = 0;
window.addEvent('load', function(){
	/**
	 *	kasowanie bordera z linków
	 */
	$$('.menu a').addEvents({
		'focus' : function() {
			this.blur();
		}
	});
	
	$$('.blur').addEvents({
		'focus' : function() {
			this.blur();
		}
	});
	
	/**
	 *	Podpowiedzi w postaci dymkow
	 */	
	var dymki = new Tips('.hover');
	dymki.addEvent('show', function(tip){
		tip.fade('in');
	});
	dymki.addEvent('hide', function(tip){
		tip.fade('out');
	});
	
	/**
	 *	Pokazywanie i chowanie tekstu sygnatury
	 */
	if ($('signature_position')) {
		$('signature_position').addEvents({
			'change' : function() {
				if (this.value == '0') {
					$('row_signature_text').style.display = 'none';
				} else {
					$('row_signature_text').style.display = 'block';
				}
			}
		});
	}
	
	$$('.button').addEvents({
		'click' : function () {
			if (this.getProperty('alt') != '' && this.getProperty('alt') != null) {
				if (this.getProperty('alt').match('[?]')) {
					var alts = this.getProperty('alt').split('\?');
					var pre = alts[0];
					var suf = '?'+alts[1];
				} else {
					var pre = this.getProperty('alt');
					var suf = '';
				}
				window.location = pre + '.html' + suf;
			}
		}
	});
	
	
	//producent -> produkt
	if ($('f_producent')) {
		$('f_producent').addEvents({
			'change' : function () {
				var producent_id = this.value;
				
				//usuniecie wszystkich opcji (usuwam tylko dlatego, ze ustawienie stylow w IE nie dziala)
				for (var i=$('f_device').length; i>0; i--) {
					$('f_device').removeChild($('f_device').options[i-1]);
				}
				
				//aktywacja lub deaktywacja selecta od sprzetu
				if (this.value != 0) {
					$('f_device').removeProperty('disabled');
					$('f_device').removeClass('disabled');
				} else {
					$('f_device').setProperty('disabled', 'disabled');
					$('f_device').addClass('disabled');
				}
				
				//pokazanie wszystkich opcji dla danego sprzetu
				var cache = $('devicesCache').value;
				var tmp = cache.split('|-|');
				if (tmp != '') {
					for (var j=0; j<tmp.length; j++) {
						var tmp2 = tmp[j].split(':-:');
						var rel = tmp2[1];
						var val = tmp2[3];
						var nam = tmp2[5];
						
						if (rel == producent_id || rel == '0') {
							
							var o = new Element('option', {
								'rel': rel,
								'value': val
							});
							o.injectInside('f_device');
							o.text = nam;
							var selectedDevice = $('selectedDevice').value;
							if (o.value == selectedDevice) {
								o.selected = true;
							}
						}
					}
				}
			}
		});
	}
	
	if ($('f_producent')) {
		$('f_producent').fireEvent('change', $('f_producent'));
	}
});
	

/*
 *	Plynne przesuwanie okna
 */
function go() {
	if (window.scrollX>=0) { // przesunięcie okna dla Netscape
		x = window.scrollX; y = window.scrollY;
	} else { // dla IE, Opery, Firefox
		x = document.body.scrollLeft;  y = document.body.scrollTop;
	}
	docelowax = pozycjax + x;
	doceloway = pozycjay + y;

	yd = (doceloway - parseInt(obj.style.top)) / 5;
	xd = (docelowax - parseInt(obj.style.left)) / 5;

	obj.style.left = parseInt(obj.style.left) + xd + "px";
	obj.style.top = parseInt(obj.style.top) + yd + "px";

/*	if (widoczne) {*/ setTimeout("go()", 1); //}
//	else { obj.style.visibility = "hidden"; }
}

/**
 *	Funkcja zwracajaca wysokosc i szerokosc ekranu
 */
function GetWindowSize() {
	if (typeof(window.innerWidth)=='number') {
		ekranX = window.innerWidth;
		ekranY = window.innerHeight;
	} else if (document.documentElement && (document.documentElement.clientWidth
	|| document.documentElement.clientHeight)) {
		ekranX = document.documentElement.clientWidth;
		ekranY = document.documentElement.clientHeight;
	} else if (document.body && (document.body.clientWidth || document.body.clientHeight)) {
		ekranX = document.body.clientWidth;
		ekranY = document.body.clientHeight;
	}
	
	var size = Object.extend({
		'X': ekranX,
		'Y': ekranY
	});
	return size;
}


/**
 *	Otwieranie okna (div) za pomoca funckji AJAX'owych
 *	----
 *	tworzenie diva
 *	ustawianie go na srodku ekranu biorac pod uwage jego rozmiary oraz rozmiary okna przegladarki
 *	nastepna funkcja (np. FillWindow) powinna umiescic w nim tresc HTML (odpowiedz z zadania AJAX)
 *	pokazanie okna (byc moze za pomoca innej funkcji, ktora doda np efekt plynnego pokazania sie)
 *	okno powinno byc zawsze na srodku, nawet jak przesune pasek przewijania w przegladarce
 *	@param int id
 *	@param int szer
 *	@param int wys
 *	@return obj
 */
function CreateWindow(id, szer, wys) {
	var ekranX = ekranY = 0;

	var size = GetWindowSize();
	ekranX = size.X;
	ekranY = size.Y;
	
	//wykrycie w ktorym miejscu jest ustawiony suwak
	var x = y = 0;
	if (typeof(window.pageYOffset)=='number') {
		x = window.pageXOffset;
		y = window.pageYOffset;
	} else if (document.body && (document.body.scrollLeft || document.body.scrollTop)) {
		x = document.body.scrollLeft;
		y = document.body.scrollTop;
	} else if (document.documentElement && (document.documentElement.scrollLeft || document.documentElement.scrollTop)) {
		x = document.documentElement.scrollLeft;
		y = document.documentElement.scrollTop;
	}

	pozycjax = ekranX/2 - szer/2;	//polowa serokosci diva
	pozycjay  = ekranY/2 - wys/2;	//polowa wysokosci diva
	startpozycjax = pozycjax + x;
	startpozycjay = pozycjay + y;
	
	var el = new Element('div', {
		'styles': {
			'width': szer+'px',
			'height': wys+'px',
			'position': 'absolute',
			'top': startpozycjay+'px',			//to musi byc obliczane, aby bylo na srodku ekranu
			'left': startpozycjax+'px',		//to musi byc obliczane, aby bylo na srodku ekranu
			'background-color': '#fff',
			'border': '1px solid #d2d2d2',
			'z-index': '1000',
			'opacity': '0'
		},
		'id': id
	});
	el.injectBefore('main');
	
	//dopisalem do plynnego przesuwania okna
	var widoczne = true; // okienko ma być widoczne
	var yd = 0;
	var xd = 0;
	obj = $(id);
	go();
	
	setCanvas(id);
	
	return el;
}


/*
 *	Wypelnianie okna trescia
 *	@param obj el
 *	@param string dane
 */
function FillWindow(el, dane) {
	el.set('html', dane);
}


/*
 *	Plynne pokazanie okna (diva)
 *	@param obj id
 */
function ShowWindow(id) {
	
	var efekt = new Fx.Tween(id, {
		duration:600
	});
	
	efekt.start('opacity', '0','1');
//	var efekt = new Fx.Style(id,'opacity',{
//		duration: 600
//	});
	
//	efekt.start(0,1);
}

/*
 *	Plynne zamkniecie okna (diva)
 *	@param obj id
 */

function CloseWindow(id) {
	var efekt = new Fx.Tween(id, {
		duration:600,
		onStart: function() {
			efekt2.start('opacity', '0.5', '0');
		},
		onComplete: function(){
			id.destroy();
		}
	});
	
	var efekt2 = new Fx.Tween($('Canvas'), {
		duration:200,
		onComplete: function(){
			$('Canvas').destroy();
		}
	});
	
	efekt.start('opacity', '1', '0');
}

/*
 *	Flash okna
 *	@param string id
 */
function FlashWindow(id) {
	var efekty = $(id).effects({
		duration: 50
	});
	
	efekty.start({
		"opacity": [1,0.7]
	}).chain(function(){
		efekty.start({
			"opacity": [0.7,1]
		});
	}).chain(function(){
		efekty.start({
			"opacity": [1,0.7]
		});
	}).chain(function(){
		efekty.start({
			"opacity": [0.7,1]
		});
	});
}

/**
 *	UNIWERSALNA FUNKCJA
 *	Aktualizuje pole wyboru select, pobierajac dane z bazy danych i umieszczajac je w polu formularza
 *	@param string fileName
 *	@param string selectId
 */
/*function UpdateSelect(fileName, selectId) {
	if (selectId == undefined) selectId = '';
	
	var selectXHR = new Request({
		'url': fileName+'.ajax.html',
		'method': 'get',
		onSuccess: function(){
			var odpowiedz = this.response.text;
			if (odpowiedz == null || odpowiedz == '' || odpowiedz == undefined) return;
			var opcje = odpowiedz.split('|');
			
			//sprawdzenie, czy w aktualnym selekcie jest pole defaultowe, jesli tak to musi byc zachowane
			var updateId = 'select_'+fileName;
			var znaleziono = 0;
			var prevSelectLength = $(updateId).length;
			for (s=0; s<prevSelectLength; s++) {
				if ($(updateId).options[s].hasClass('default')) {
					znaleziono++;
				}
			}
			
			for (var i=0; i<opcje.length; i++) {
				var opcjeDetails = opcje[i].split(':');
				for (j=0; j<opcjeDetails.length; j++) {
					if (j==0) {
						var mailID = opcjeDetails[j];
					} else if (j==1) {
						var opcjeName = opcjeDetails[j];
					} else if (j==2) {
						var opcjeDefault = opcjeDetails[j];
					}
				}
				
				//zmiana selecta na dane odebrane od skryptu
				var numer = i+znaleziono;
				$(updateId).length = opcje.length+znaleziono;
				$(updateId).options[numer].value = mailID;
				$(updateId).options[numer].text = opcjeName;
				if (opcjeName == opcjeDefault) {
					$(updateId).options[numer].selected = true;
				}
			//	alert('ID: '+mailID+', ADDRESS: '+opcjeName);
			}
			//po otrzymaniu odpowiedzi, musze zmienic odpowiedniego selecta
//			alert ('odpowiedz: '+odpowiedz);
		}
	});
	
	//Drugi parametr chyba nie jest potrzebny - przetestowac na serwerze czy na pewno
	selectXHR.send('selectId='+selectId);
}*/
 

/**
 *	Naprawianie rozmiarow okna, biorac pod uwage jego wysokosc, szerokosc oraz marginesy i paddingi
 *	poszczegolnych jego elementow
 *	Jezeli w oknie jest formularz, to przypisanie metodzie onSubmit wykonanie zapytania AJAX'owego
 */
function FixWindow (div, divSzer, divWys, opcje) {
	//uzupelnienie wysokosci srodkowego elementu
	var gora = div.getElement('div[class=header]');
	var srodek = div.getElement('div[class=okno_tresc]');
	var dol = div.getElement('div[class=okno_zamknij]');
	
	var nowaWys = divWys - parseInt(gora.getStyle('height')) - parseInt(gora.getStyle('padding-top')) -  parseInt(dol.getStyle('height')) - 2*parseInt(srodek.getStyle('padding')) +'px';
	srodek.setStyle('height', nowaWys);
	
	var nowaSzer = divSzer - 2*parseInt(srodek.getStyle('padding')) +'px';
	srodek.setStyle('width', nowaSzer);
	
	var nowaSzerBelki = divSzer - parseInt(gora.getStyle('padding-left')) + 'px';
	gora.setStyle('width', nowaSzerBelki);
	
	//ustawienie eventu na zamkniecie okna
	$('okno_zamknij').addEvent('click', function() {
		CloseWindow(div)
	});
	
	//ustawienie eventu na onSubmit
	if (opcje != undefined && opcje.ActionFormID != undefined && $(opcje.ActionFormID)) {
		$(opcje.ActionFormID).addEvent('submit', function(event) {
			var event = new Event(event);
			event.preventDefault();
			
			$(opcje.ActionFormID).set('send', {		//#		<-- klucz do problemu z wysylaniem formularzy w MooTools 1.2
				onRequest: function() {
					FillWindow(div, '');
					Loader(div);
				},
				onSuccess: function() {
					FillWindow(div, this.response.text);
					FixWindow(div, divSzer, divWys, opcje);
					if (opcje.ActionFormID == 'add_addressForm' && opcje.userId != undefined) {
						UpdateSelect('update_default_email', opcje.userId);
					}
					if (opcje.ActionFormID == 'add_groupForm') {
						MakeDraggableBoxes();
						UpdateSelect('update_boxgroups', opcje.groupId);
					}
				}
			}).send();
		});
	}
}

/**
 *	Pokazywanie grafiki przedstawiającej ładowanie danych podczas wczytywania zawartości
 *	@param string divID
 *	@param int imgSize
 */
function Loader(divID, imgSize) {
	divX = $(divID).getStyle('width');
	divY = $(divID).getStyle('height');
	
	if (imgSize == undefined || imgSize == null || imgSize == '' || imgSize > 32) {
		imgSize = 32;		//domyslna maksymalna wartosc
	} else if (imgSize < 12) {
		imgSize = 12;		//domyslna minimalna wartosc
	}
	
	imgLeft = (parseInt(divX) - imgSize) / 2;
	imgTop = (parseInt(divY) - imgSize) / 2;
	divX = parseInt(divX) - imgLeft;
	divY = parseInt(divX) - imgTop;
	
	var el = new Element('div', {
		'styles': {
			'width': divX,
			'height': divY,
			'padding-left': imgLeft+'px',
			'padding-top': imgTop+'px'
		}
	});
	el.injectInside(divID);
	
	var img = new Element('img', {
		'src': 'img/loader.gif',
		'width': imgSize+'px',
		'height': imgSize+'px'
	});
	img.injectInside(el);
}

/**
 *	Nałożenie diva na całą stronę wyszarzając ją
 *	@param object obj
 */
function setCanvas(obj) {
	var divMaster = null;
	var divCanvas = null;
	
	var size = GetWindowSize();
	var PageWidth = document.body.scrollWidth;
	var PageHeight = document.body.scrollHeight;
	
	if (PageWidth < size.X) PageWidth = size.X;
	if (PageHeight < size.Y) PageHeight = size.Y;
	
	PageWidth = PageWidth+'px';
	PageHeight = PageHeight+'px';
	
	divMaster = document.body;

	var divCanvas = new Element('div', {
		'id': 'Canvas',
		'name': 'Canvas',
		'styles': {
			'position': 'absolute',
			'display': 'none',
			'zindex': '1',
			'top': '0',
			'left': '0',
			'width': PageWidth,
			'height': PageHeight,
			'opacity': '.5',
			'backgroundColor': '#000000'
		},
		'events': {
			'click': function(){
				CloseWindow($(obj));
			}
		}
	});
	divCanvas.injectInside(divMaster);
//	var efekt = new Fx.Style(divCanvas,'opacity',{
//		duration: 300
//	});
//	
//	efekt.start(0,0.5);
	divCanvas.setStyle('display', 'block');
}


/**
 *	AJAX
 *	Pokazywanie helpa
 */
function ShowHelp(topic) {
	var divID = 'okno';
	if (topic == undefined) topic = 'general';
	if (!$(divID)) {
		var div = null;			//zmienna obiektu tworzonego diva (okienka)
		var divSzer = 800;		//szerokosc obiektu (okienka)
		var divWys = 500;		//wysokosc obiektu (okienka)
		var oknoXHR = new Request({
			'url': 'help.ajax.html',
			'method': 'get',
			onRequest: function() {
				div = CreateWindow(divID,divSzer,divWys);
				//musze zrobic jakas ladna funkcje obslugujaca grafike podczas ladowania
				Loader(divID);
				ShowWindow(div);
			},
			onSuccess: function(){
				FillWindow(div, this.response.text);
				FixWindow(div, divSzer, divWys);
			}
		});
		
		//Drugi parametr chyba nie jest potrzebny - przetestowac na serwerze czy na pewno
		oknoXHR.send('topic='+topic);
	} else {
		FlashWindow(divID);
	}
}

/**
 *	AJAX
 *	Pokazanie Ajaxowego okienka z dokumentem
 */
function OpenDoc(url,ext) {
	var divID = 'okno';
	if (url == undefined) url = 'error';
	if (!$(divID)) {
		var div = null;			//zmienna obiektu tworzonego diva (okienka)
		var divSzer = 800;		//szerokosc obiektu (okienka)
		var divWys = 500;		//wysokosc obiektu (okienka)
		var oknoXHR = new Request({
			'url': 'opendoc.ajax.html',
			'method': 'get',
			onRequest: function() {
				div = CreateWindow(divID,divSzer,divWys);
				//musze zrobic jakas ladna funkcje obslugujaca grafike podczas ladowania
				Loader(divID);
				ShowWindow(div);
			},
			onSuccess: function(){
				FillWindow(div, this.response.text);
				FixWindow(div, divSzer, divWys);
			}
		});
		
		//Drugi parametr chyba nie jest potrzebny - przetestowac na serwerze czy na pewno
		oknoXHR.send('url='+url+'&ext='+ext);
	} else {
		FlashWindow(divID);
	}
}
