var popup_msg = 'Twoja przegl?darka ma zablokowan? opcj? wyskakuj?cych okienek (popups).\nAby m?c zkorzysta? z tej aplikacji musiasz tak skonfigurowa? sw?j system i/lub przegl?dark? aby ta aplikacja mog?a otwiera? nowe okna.';

/**
 * Otwiera nowe okno przegl?darki o zadanych parametrach.
 * W przypadku blokady popup?w pojawia si? stosowny komunikat.
 *
 * @param string win_url adres strony ?adowanej do otwartego okna
 * @param string win_name nazwa okna, u?ywana w atrybucie target
 * @param int win_width szeroko?? okna
 * @param int win_height wysoko?? okna
 * @param bool status pokazuje pasek statusu (parametr ukryty ze wzgl?du na kompatybilno?? wstecz oraz wygod? - rzadko u?ywany)
 * @return bool
 */
function openWindow (win_url, win_name, win_width, win_height) {

	if (arguments[4] != null) {
		if (arguments[4]) status = 1;
		else status = 0;
	}
	else status = 1

	if (arguments[5] != null) {
		if (arguments[5]) scrollable = 1;
		else scrollable = 0;
	}
	else scrollable = 1

	var extra=0;
	w = screen.availWidth - 20;
	if (parseInt(win_width)<parseInt(w)-extra) w=parseInt(win_width)+extra;
	h = screen.availHeight - 40;
	if (parseInt(win_height)<parseInt(h)) h=parseInt(win_height);

	var leftpos = (screen.availWidth-20-w) / 2;
	var toppos = (screen.availHeight-40-h) / 2;

	_newWindow = window.open(win_url, win_name, "width="+win_width+",height="+win_height+",menubar=0,toolbar=0,location=0,status="+status+",scrollbars="+scrollable+",directories=0,resizable=1,copyhistory=0,left="+leftpos+",top="+toppos);
	if (_newWindow.name == undefined)
	{
		alert(popup_msg);
	}
	else {
		return false;
	}
	return true;
}

/**
 * Wysy?a formularz z okre?lonymi argumentami
 * Pozwala przekazywa? pewne dodatkowe polecenia do skryptu obs?ugi formularza
 * poprzez ustawienie ukrytych p?l __EVENTTARGET i __EVENTARGUMENT.
 * Specjaln? warto?ci? pierwszego agumentu jest 'form', kt?ry wskazuje, ?e drugi
 * argument zawiera adres, pod jaki nalezy wys?a? formularz.
 *
 * Based on __doPostBack method from ASP.NET
 * @autor Jarek Wasilewski
 * @version 0.3, 2004-06-26
 * @access public
 */
 function __doPostBack(eventTarget, eventArgument) {
	if (arguments.length > __doPostBack.length) {
		theform = document.forms[arguments[2]];
	}
	else {
		theform = document.forms[0];
	}

	if (eventTarget == 'form')
	{
		theform.action = eventArgument;
	}
	else {
		theform.__EVENTTARGET.value = eventTarget;
		theform.__EVENTARGUMENT.value = eventArgument;
	}
	theform.submit();
}

/**
 * Okre?la warto?ci parametr?w __EVENTTARGET i __EVENTARGUMENT
 * Pozwala przekazywa? pewne dodatkowe polecenia do skryptu obs?ugi formularza
 * poprzez ustawienie ukrytych p?l __EVENTTARGET i __EVENTARGUMENT.
 *
 * @autor Jarek Wasilewski
 * @version 0.1, 2004-06-26
 * @access public
 */
 function __setPostBackParams(eventTargetValue, eventArgumentValue) {
	if (arguments.length > __setPostBackParams.length) {
		_theform = document.forms[arguments[2]];
	}
	else {
		_theform = document.forms[0];
	}
	_theform.__EVENTTARGET.value = eventTargetValue;
	_theform.__EVENTARGUMENT.value = eventArgumentValue;
}

/**
 * Inicjuje formularza
 * poprzez przeszukanie jego zawarto?ci, odnalezienie element?w z atrybutem 'onload'
 * i wykonaniem zawartych tam polece?
 * @autor Jarek Wasilewski
 * @version 0.1, 2004-05-18
 * @access public
 */
function __doFormInit () {

	if (document.forms.length == 0)
		return;
	if (is_dom)
	{
		for (x =0; x < document.forms.length; x++) {
			theform = document.forms[x];
			for (i =0; i< theform.elements.length; i++) {
				if (load_action = theform.elements[i].getAttribute('onload'))
				{
					switch (load_action) {
						case 'focus':
							theform.elements[i].focus();
						break;
						case 'select':
							theform.elements[i].focus();
							theform.elements[i].select();
						break;
						default:
							eval(load_action);
						break;
					}
				}
			}
		}
	}
}

// pod?wietlanie wierszy tabel
var nodeMouseOverColor = "#C7E2FA";
var lastBgColor= '';

function colorNodeOver(Node) {
	if (is_dom) {
		objNode = document.getElementById(Node.id);
		if (objNode) {
			lastBgColor = objNode.style.backgroundColor;
			objNode.style.backgroundColor=nodeMouseOverColor;
		}
	}
}

function colorNodeOut(Node) {
	if (is_dom) {
		objNode = document.getElementById(Node.id);
		if (objNode) objNode.style.backgroundColor = lastBgColor;
	}
}

function colorNodeOverRopson(nr) {
	if (is_dom) {
		objNode = document.getElementById('row_'+nr);
		if (objNode) {
			lastBgColor = objNode.style.backgroundColor;
			objNode.style.backgroundColor=nodeMouseOverColor;
			if (document.getElementById('abstract_'+nr))
				document.getElementById('abstract_'+nr).style.backgroundColor=nodeMouseOverColor;
		}
	}
}

function colorNodeOutRopson(nr) {
	if (is_dom) {
		objNode = document.getElementById('row_'+nr);
		if (objNode)
		{
			objNode.style.backgroundColor = lastBgColor;
			if (document.getElementById('abstract_'+nr))
				document.getElementById('abstract_'+nr).style.backgroundColor=lastBgColor;

		}
	}
}

/**
 * Poprzednia zawarto?? paska statusu
 */
var statusBarCache = '';
function SetStatus (msg) {

	if (msg) {
		statusBarCache = window.status;
		window.status = msg;
	}
	else {
		window.status = statusBarCache;
	}
//	alert(window.status);
	return false;
}

/**
 * AdvSelect
 * Obiekt zaawansowanego pola Select, z opcj? dodawania i usuwania element?w
 * oraz wysy?ania ca?ej listy.
 */
var objSelect=null;var selectWord='';var objWord=null;
function AdvSelect (base_select) {

	this.Field = base_select;
	this.DelSelected = DelSelectOption;
	this.DelOption=DelOption;
	this.Add = AddSelectOption;
	this.SelectAll = SelectAll;
	this.DeselectAll = DeselectAll;
	this._setSelection = _setSelection;
	this.InitSearch=InitSearch;
	this.StopSearch=StopSearch;
}

/**
 * Usuwa zaznaczone elementy z listy
 */
function DelSelectOption () {
	if (this.Field.selectedIndex != -1) {
		while (this.Field.selectedIndex > -1)
		{
			i = this.Field.selectedIndex;
			this.Field.options[i] = null;
		}
	}
	else {
		alert("Prosz? wybra? pozycj? do usuni?cia.");
	}
}

/**
 * Usuwa element o value=value z listy
 * Zwraca true, gdy usunie
 */
function DelOption (value) {
	i=0;len=this.Field.options.length;
	while (i<len)
	{
		if (this.Field.options[i].value==value)
		{
			this.Field.options[i]=null;
			return true;
		}
		else
			i++;
	}
	return false;
}

/**
 * Sprawdza, czy element jest ju? na  li?cie
 */
function IsInSelect (value) {
	i=0;len=this.Field.options.length;
	while (i<len)
	{
		if (this.Field.options[i].value==value)
			return true;
		i++;
	}
	return false;
}

/**
 * Dodaje do listy element o wskazanej warto?ci i nazwie
 */
function AddSelectOption (_value, _name, _sort,_select) {

	_newOption = new Option(_value, _name);
	_last=this.Field.length;_sel=_last;
	this.Field.options[_last] = _newOption;
	if (_sort && _sort=='up')
	{//wk?adanie z sortowaniem rosn?cym
		for (var i=_last-1;i>=0;i--) {
			_text=this.Field.options[i].text;
			if (_value<_text) {
				this.Field.options[i+1].text=_text;
				this.Field.options[i+1].value=this.Field.options[i].value;
			}
			else {
				this.Field.options[i+1].text=_value;
				this.Field.options[i+1].value=_name;
				_sel=i+1;
				break;
			}
			if (i==0) {
				this.Field.options[0].text=_value;
				this.Field.options[0].value=_name;
				_sel=0;
			}

		}
	}
	if (_select)
		this.Field.options[_sel].selected=true;
}

/**
 * Inicjuje proces wyszukiwania selecta. Najlepiej uruchomi? w onfocus
 */
function InitSearch()
{
	if (objWord)
		return false;

	if(is_gecko || ns4)
		document.captureEvents(Event.KEYDOWN);
	document.onkeydown=selectKeyDown;
	objSelect=this.Field;
	selectWord='';
	objWord=document.getElementById(this.Field.id+'_word');
	if (objWord)
	{
		xy=findXY(objSelect.id);
		objWord.style.top=(xy.Y-20)+'px';
		ShowLayer(objWord.id);
	}
}

/**
 * Ko?czy proces wyszukiwania selecta. Najlepiej uruchomi? w onblur
 */
function StopSearch()
{
	if(is_gecko || ns4)
		document.releaseEvents(Event.KEYDOWN);
	objSelect=null;
	selectWord='';
	if (objWord)
	{
		HideLayer(objWord.id);
//		objWord.style.visibility="hidden";
		objWord.innerHTML='';

	}
	objWord=null;
}

/**
 * Wywo?ywana jest po wci?ni?ciu klawisza. Enter kasuje ostatni? liter?
 */
function selectKeyDown(e)
{
	if (!objSelect || objSelect.type.search('select')==-1) return ;
	if(is_gecko || ns4) keyCode=e.keyCode;
	else              keyCode=event.keyCode;
	if (!isGoodKeyCode(keyCode)) return false;
	if (keyCode==13)
	{
		if (selectWord!='')
			selectWord=selectWord.substr(0,selectWord.length-1);
	}
	else
		selectWord=selectWord+String.fromCharCode(keyCode);
	if (objWord)
		objWord.innerHTML=selectWord;
	else
		return false;
	if (!selectWord)
	{
		StopSearch();
		return false;
	}

	r=new RegExp('^'+selectWord,'i');
	for (i=0;i<objSelect.options.length;i++)
	{
		if (r.test(objSelect.options[i].text))
			{objSelect.options[i].selected=true;if (!objSelect.multiple) return false;}
		else if (objSelect.options[i].selected)
			objSelect.options[i].selected=false;

	}
	return false;
}
function isGoodKeyCode(keyCode)
{
	if (keyCode==13 || keyCode==32 || (keyCode>=48 && keyCode<=57) || (keyCode>=65 && keyCode<=90))
		return true;
	return false;
}

/**
 * Zaznacza wszystkie elementy na li?cie
 */
function SelectAll () {

	this._setSelection ('select');
}

/**
 * Odznacza wszystkie elementy na li?cie
 */
function DeselectAll () {

	this._setSelection ('deselect');
}

/**
 * Zmienia stan wszystkich element?w na li?cie
 */
function _setSelection (mode) {

	how_select = mode == 'select' ? true : false;
	for (var i = 0; i < this.Field.length; i++) {
		this.Field.options[i].selected = how_select;
	}
}

/**
 * Zestaw funkcji s?u??cych wy?wietlaniu oryginalnych obrazk?w w zdarzeniu 'onclick' na miniaturce
 */
function popupW(url,name,x,y) {
   var extra=0;
	w = screen.availWidth;
   if (parseInt(x)<parseInt(w)-extra) w=parseInt(x)+extra;
	h = screen.availHeight;
   if (parseInt(y)<parseInt(h)) h=parseInt(y);

   var leftpos = (screen.availWidth-w) / 2;
   var toppos = (screen.availHeight-h) / 2;

	features = "width="+w+",height="+h;
	features += "left=0,top=0,screenX=0,screenY=0,scrollbars=0,resizable=1,left="+leftpos+",top="+toppos;
	//window.open(url, name, features);
	myWindow=window.open("", name, features);
	myWindow.document.write("<html><head><title></title></head><body LEFTMARGIN='0' RIGHTMARGIN='0' TOPMARGIN='0' BOTTOMMARGIN='0' MARGINWIDTH='0' MARGINHEIGHT='0'><center><img src='"+url+"'></center></body></html>");
}

function PopupPic(sPicURL, name) {
	myWindow=window.open("popup.htm?"+sPicURL, name, "resizable=1,HEIGHT=200,WIDTH=200");
}

/**
 * Otwiera nowe okno
 */
function newW(url,name) {
	window.open(url, name);
}

/**
 * Ustawia domy?ln? warto?? pola gdy to jest puste
 */
function _Blur(obj, txt) {
	if (obj.value == '') {
		obj.value = txt;
	}
}

/**
 * Czy?ci domy?ln? warto?? pola
 */
function _Focus(obj, txt) {
	if (obj.value == txt) {
		obj.value = '';
	}
}

/**
 * Czy?ci zawarto?? pola gdy posiada ono domy?ln? warto?? przekazan? w txt
 */
function _clearFValue(id, txt) {
	f = document.getElementById(id);
	if (f != undefined && f.value == txt) {
		f.value = '';
	}
}

/**
 * Otwiera okno z podgl?dem strony SmartSite
 */
function OpenPreviewSSPage(pid) {
	return openWindow('index.php?pid='+pid+'', 'PreviewSSPage', 500, 400, false, true);
}

function OpenResourcesDialog() {
	return openWindow('index.php?m=resource&insert=1', 'resources', 750, 600, true, true)
}

/* Otwarcie okna z uploadem plik?w */
function OpenUploadFilesDialog(pid) {
	return openWindow('index.php?a=upload&m=resource&id='+pid, 'UploadFiles', 700, 440, true, true)
}

/* Otwarcie okna z uploadem plik?w */
function OpenFilePropertiesDialog(pid) {
	openWindow('index.php?a=fileedit&m=resource&id='+pid, 'FileProperties', 380, 250, false, false)
}

/**
 * Otwiera okno z podgl±dem oferty pracy
 */
function OpenPreviewOffer(pid) {
	//return openWindow('?m=work&a=previewoffert&id='+pid, 'PreviewOffert', 700, 600, false, false);
	return window.open('?m=work&a=previewoffert&id='+pid);
}

/**
 * Otwiera okno z podgl±dem oferty edykuacyjnej
 */
function OpenPreviewOfferEdu(pid) {
	//return openWindow('?m=edu&a=previewoffert&id='+pid, 'PreviewOffert', 700, 600, false, false);
	return window.open('?m=edu&a=previewoffert&id='+pid);
}

/**
 * Otwiera okno z podgl±dem prezentacji firmy
 */
function OpenPresentation(fid, type) {
	// return openWindow('?m=user&a=present&t='+type+'&id='+fid, 'FirmPresentation', 840, 600, false, true);
	return window.open('?m=user&a=present&t='+type+'&id='+fid);
}

/**
 * Otwiera okno z formularzem dodawania CV i listi mot. do oferty, z poziomu podgl±du og³oszenia
 */
 function OpenAddCVForm(oid) {
	return openWindow('?m=user&a=addil&idOffer='+oid, 'AddCV', 400, 350, false, false);
}

/**
 *
 *
 * @access public
 * @param type name desc
 * @return
 */
function changeBackground(layerId, possibilities){
	styledObj = document.getElementById(layerId);
	if (styledObj) {
		// losowanie obrazka z puli
		index = Math.random();
		index = Math.round(possibilities.length * index)-1;
		if (index == -1) index = possibilities.length - 1;
		bkgImage = possibilities[index];

		// window.status = index + ": " + bkgImage;
		styledObj.style.backgroundImage = "url(images/"+bkgImage+")";
	}
}
