/* ************************************************************************** *
 *																										*
 * Core Javascript v1.0 by Slodave, April 2008, http://www.zabec.net				*
 * -------- -------- -------- -------- -------- -------- -------- --------		*
 * ************************************************************************** */

/* OSNOVNE FUNKCIJE	 																			*/
/* ************************************************************************** */

	/* funkcija generira error okno (največkrat preko ajax poizvedb) */
	var ERROR = {
		display : function(error) {
				$('error_popup').update("<p>"+error+"</p> <a href='#' onclick='ERROR.hide()'>X</a>");
				$('error_popup').style.display='block';
			},
		hide : function() {
				$('error_popup').style.display='none';
			}
	}

	/* funkcija naredi preusmeritev na določen url */
	function preusmeri(url)
	{
		document.location = url;
	}

	/* funkcija preveri GET PATH za določeno spremenljivko */
	function jsGet(type)
	{
		if(location.href.match(type))
		{
			return location.href.split(type+'=')[1].split('&')[0];
		}
	}

	/* funkcija zamenja star class z novim */
	function changeClass(id, oldclass, newclass){
		if($(id))
		{
			$(id).removeClassName(oldclass);
			$(id).addClassName(newclass);
		}
	}

	/* funkcija skrbi za potrditev uporabnika pred izbrisom
	 * kliče jo funkcija getSelected, uporabljena je v editorju
	*/
	function checkConfirmation(id)
	{
		var potrdi = confirm('Ali ste prepričani da želite izbrisati izbrano polje?');

		if(potrdi)
		{
			izbrisi(id);
			/* zapremo editor (če je izbris preko editorja) */
			if($('editid'))
			{
				editor('off');
			}
		}
	}

	/* funkcija preveri kakšna je GET spremenljivka, če gre za klic po novem vnosu iz dashboarda kliče editor */
	function checkBljiznica(){
		if(jsGet('new') == 'true')	{
			//odpremo editor
			editor('on');
		}
		//preverimo če je potrebno prikazati gumbe za vrstni red
		visibleRazvrsti();
	}

/* ************************************************************************** */

/* Levi menu   																					*/
/* ************************************************************************** */
	function leftmenu(menu)
	{
		if($("nav_meni_"+menu).hasClassName('nav_meni_off')){
			//nektiven to aktiven (funkcija changeClass iz osnovnih funkcij)
			changeClass($("nav_meni_"+menu), "nav_meni_off", "nav_meni_on");
			changeClass($("menu_naslov_off_"+menu), "block", "none");
			changeClass($("menu_naslov_on_"+menu), "none", "block");
			changeClass($("menu_"+menu), "none", "block");
		}else{
			changeClass($("nav_meni_"+menu), "nav_meni_on", "nav_meni_off");
			changeClass($("menu_naslov_off_"+menu), "none", "block");
			changeClass($("menu_naslov_on_"+menu), "block", "none");
			changeClass($("menu_"+menu), "block", "none");
		}
	}
/* ************************************************************************** */

/* Osnutki   																						*/
/* ************************************************************************** */

	/* funkcija skrbi za premik itema v osnutke, ter update števila osnutkov po premiku */
	function osnutek(id){
		var modpath = $F('modpath');
		new Ajax.Request(modpath+'/ajax.php',
		  {
		    parameters: {action: 'osnutek', id: id},
		    onSuccess: function(transport)
			 {

				// če ni napake dinamično odstranimo div z itemom
				if(transport.responseText != "error")
		      {
					if($('item_'+id))
					{
						// povečamo število osnutkov v levem menuju
						$('stevilo_osnutkov').update(parseInt($('stevilo_osnutkov').innerHTML)+1);
						// osvežimo listing
						razvrsti();
					}
		      }
		    },
		    on800: function(transport)
			 {
			 	ERROR.display(transport.responseText);
			 }
		  });
	}
/* ************************************************************************** */

/* Funkcije za izbris																			*/
/* ************************************************************************** */

	/* funkcija skrbi za izbris itemov v listingu */
	function massDelete(){
		var potrdi = confirm('Ali ste prepričani da želite izbrisati izbrana polja?');

		//uporabnik je potrdil izbris
		if(potrdi)
		{
			var checkbox = Form.getInputs($('item_form'), 'checkbox');
			checkbox.each(function(itemCheckbox)
			{
				if($F(itemCheckbox) == 'on')
				{
					var id = parseInt(itemCheckbox.id);
					//izbrišemo določen item
					izbrisi(id);
				}
			});
		}
	}

	/* funkcija skrbi za izbris itema, ter diva, ki item prikazuje v listingu */
	function izbrisi(id){
		var modpath = $F('modpath');
		new Ajax.Request(modpath+'/ajax.php',
		  {
		    parameters: {action: 'izbrisi', id: id},
		    onSuccess: function(transport)
			 {
				if(transport.responseText != "error")
		      {
					//osvežimo listing če ni napake
					razvrsti();
		      }
		    },
		    on800: function(transport)
			 {
			 	ERROR.display(transport.responseText);
			 }
		  });
	}

	/* funkcija preveri če obstaja editid in kliče potrditev za izbris itema iz editorja */
	function editor_delete() {
		if($('editid')) {
			checkConfirmation($F('editid'));
		}
	}

	/* funkcija odstrani sliko iz določenega itema (klicana je iz editorja) */
	function remove_slika() {
		var id = $F('editid');
		var modpath = $F('modpath');
		new Ajax.Request(modpath+'/ajax.php',
			{
		    parameters: {action: 'remove_slika', id: id},
		    onSuccess: function(transport)
				 {
					//osvežimo trenutno stopnjo
					editor_check($F('stopnja'));
			    },
		    on800: function(transport)
				 {
				 	ERROR.display(transport.responseText);
				 }
			});
	}

	/* funkcija odstrani sliko v galeriji iz določenega itema (klicana je iz editorja) */
	function remove_slika_galerija(id_slika) {
		var id = $F('editid');
		var modpath = $F('modpath');
		new Ajax.Request(modpath+'/ajax.php',
			{
		    parameters: {action: 'remove_slika_galerija', id: id, id_slika: id_slika},
		    onSuccess: function(transport)
				 {
					//osvežimo trenutno stopnjo
					editor_check($F('stopnja'));
			    },
		    on800: function(transport)
				 {
				 	ERROR.display(transport.responseText);
				 }
			});
	}

	/* funkcija odstrani datoteko iz določenega itema (klicana je iz editorja) */
	function remove_datoteka(id_datoteka) {
		var modpath = $F('modpath');
		new Ajax.Request(modpath+'/ajax.php',
			{
		    parameters: {action: 'remove_datoteka', id: $F('editid'), id_datoteka: id_datoteka},
		    onSuccess: function(transport)
				 {
					//osvežimo trenutno stopnjo
					editor_check($F('stopnja'));
			    },
		    on800: function(transport)
				 {
				 	ERROR.display(transport.responseText);
				 }
			});
	}

/* ************************************************************************** */

/* Funkcije za vrstni red 																		*/
/* ************************************************************************** */

	/* funkcija spremeni vrstni red določenega itema */
	function vrstni_red(premakni, id){
		var modpath = $F('modpath');
		new Ajax.Request(modpath+'/ajax.php',
			{
		    parameters: {action: 'vrstni_red', premakni: premakni, id: id},
		    onSuccess: function(transport)
				 {
					var stran = $('centralna_strani').select('[class="stani_izbran"]');
					//osvežimo listing glede na stran na kateri se nahajamo
					modul_listing(stran[0].innerHTML);
			    },
		    on800: function(transport)
				 {
				 	ERROR.display(transport.responseText);
				 }
			});
	}

	/* funkcija prikaže ali skrije gumbe za razvrščanje po vrstnem redu (glede na izbran tip razvrščanja) */
	function visibleRazvrsti()	{
		var linkrazvrsti = $$('[class="vrstni_red"]');
		//če je razvrščanje, kot na spletni strani prikažemo gumbe
		if($F('order') == 'site')
		{
			linkrazvrsti.each(function(razvrsti)
			{
	  			razvrsti.style.display="block";
			});
		}
		//skrijemo gumbe
		else {
			linkrazvrsti.each(function(razvrsti)
			{
	  			razvrsti.style.display="none";
			});
		}
	}

	/* funkcija spremeni vrstni red slik v galeriji, na editorju */
	function vrstni_red_galerija(premakni, id)
	{
		var modpath = $F('modpath');
		new Ajax.Request(modpath+'/ajax.php',
			{
		    parameters: {action: 'vrstni_red_galerija', premakni: premakni, id: id},
		    onSuccess: function(transport)
				 {
					//osvežimo stopnjo v editorju
					editor_check($('stopnja').value);
			    },
		    on800: function(transport)
			 {
			 	ERROR.display(transport.responseText);
			 }
			});
	}

/* ************************************************************************** */

/* Funkcije za iskalnik																			*/
/* ************************************************************************** */

	/* osnovna funkcija za iskanje po itemih v listingu */
	function isci(iskano_geslo) {
		//preverimo da iskano geslo ni prazno
		if(iskano_geslo) {
			//preverimo če iščemo po osnutkih
			if(jsGet('act') == 'osnutek' || jsGet('act') == 'osnutek#') {
				var isosnutek = "ok";
			}
			else {
				var isosnutek = false;
			}
			//pokličemo funkcijo, ki obarva iskano besedilo
			iskalnik_barva("on");

			//pošljemo poizvedbo na server
			var modpath = $F('modpath');
			new Ajax.Request(modpath+'/ajax.php',
				{
			    parameters: {action: 'isci', iskano_geslo: iskano_geslo, osnutek: isosnutek},
			    onSuccess: function(transport)
					 {
						// vrnemo rezultat, ter skrijemo strani in podatke o številu vnosov
						$('listing_vsebina').update(transport.responseText);
						$('centralna_strani').hide();
						$('centralna_vnosov').hide();
				    },
			    on800: function(transport)
					 {
					 	ERROR.display(transport.responseText);
					 }
				});
		}
	}

	/* funkcija spremeni barvo teksta v iskalniku */
	function iskalnik_barva(mode){
		if(mode == "on"){
			// sprememba barve med iskanjem
			$("iskalnik").removeClassName("iskalnik");
			$("iskalnik").addClassName("iskalnik_active");
		}
		else {
			// vrnemo iskalnik na neaktivno stanje
			$("iskalnik").removeClassName("iskalnik_active");
			$("iskalnik").addClassName("iskalnik");
		}
	}
/* ************************************************************************** */

/* Osnovni listing																				*/
/* ************************************************************************** */

	/* funkcija generira nov listing na podlagi povpraševanja v bazi, vrne XML z podatki o samem listingu,
	 * številu strani, številu vnosov, zadnje spremembe in številu osnutkov
	 */
	function modul_listing(page)	{
		//preverimo če gre za osnutke (funkcija jsGet v osnovnih f.)
		if(jsGet('act') == 'osnutek' || jsGet('act') == 'osnutek#') {
			var isosnutek = "ok";
		}
		else {
			var isosnutek = false;
		}

		//preverimo če je izbrano razvrščanje, če ni izberemo osnovno razvrščanje po abecedi
		if($('order')) {
			var order = $F('order');
		}
		else {
			var order = "abc";
		}

		//ajax request na server
		new Ajax.Request('sys/modul_lib/ajax.php',
			{
		    parameters: {action: 'listing', stran: page, order: order, osnutek: isosnutek},
		    onSuccess: function(transport)
			 {
				//vrnjen je XML
				var xml = transport.responseXML;

				var listing = xml.getElementsByTagName("listing")[0].childNodes[0].nodeValue;
				var pages = xml.getElementsByTagName("pages")[0].childNodes[0].nodeValue;
				var st_vnosov = xml.getElementsByTagName("st_vnosov")[0].childNodes[0].nodeValue;
				var zadnja_sprememba = xml.getElementsByTagName("zadnja_sprememba")[0].childNodes[0].nodeValue;
				var osnutek = xml.getElementsByTagName("osnutek")[0].childNodes[0].nodeValue;

				//update obstoječih polj
				$('listing_vsebina').update(listing);
				$('centralna_strani').update(pages);
				$('global_st_vnosov').update(st_vnosov);
				// preverimo če polja obstajajo (v nekaterih primerih ne)
				if($('global_zadja_sprememba')) {
					$('global_zadja_sprememba').update(zadnja_sprememba);
				}
				if($('stevilo_osnutkov')) {
					$('stevilo_osnutkov').update(osnutek);
				}

				//prikažemo gumbe za vrstni red
				visibleRazvrsti();
		    },
		    on800: function(transport)
			 {
			 	ERROR.display(transport.responseText);
			 }
			});
	}

	/* funkcija kliče ponovno osveževanje listinga glede na stran */
	function razvrsti()
	{
		var stran = $('centralna_strani').select('[class="stani_izbran"]');
		//če obstaja izbrana stran
		if(stran[0])
		{
			//kličemo osveževanje listinga na izbrani strani
			modul_listing(stran[0].innerHTML);
		}
		else
		{
			//kličemo osveževanje listinga na prvi strani
			modul_listing(1);
		}
	}

	/* funkcija skrbi za preverjanje izbranih polj in posledičnih akcij v listingu */
	function getSelected(preform){
		var checkbox = Form.getInputs($('item_form'), 'checkbox');
		checkbox.each(function(itemCheckbox)
		{
			if($F(itemCheckbox) == 'on')
			{
				var id = parseInt(itemCheckbox.id);
				// preverimo katera akcija naj se zgodi
				switch(preform)
				{
					case 'izbrisi':
						//zahtevamo potrditev uporabnika (funkcija iz osnovnih funkcij)
				  		checkConfirmation(id);
				  	break;
					case 'osnutek':
				  		//premaknemo določen item v osnutke
						osnutek(id);
				  	break;
				}
			}
		});
	}

	/* funkcija izbere vse item checkboxe v listingu */
	function selectAll(){
		var checkbox = Form.getInputs($('item_form'), 'checkbox');
		checkbox.each(function(itemCheckbox)
		{
			itemCheckbox.checked = true;
		});
	}

	/* funkcija odstrani vse izbore item checkboxov v listingu */
	function selectNone(){
		var checkbox = Form.getInputs($('item_form'), 'checkbox');
		checkbox.each(function(itemCheckbox)
		{
			itemCheckbox.checked = false;
		});
	}


/* ************************************************************************** */

/* DETAILNI PREGLED													       					*/
/* ************************************************************************** */

	/* funkcija generira okno za detailni pregled, ter zgenerira vsebino */
	function detail(mode, id) {
		//prikažemo detail
		if(mode == 'on') {
			//preverimo če gre je nastavljena lang spremenljivka
			if($('lang')) {
				var jezik = $F('lang');
			}
			else {
				var jezik = "";
			}

			var modpath = $F('modpath');
			new Ajax.Request(modpath+'/ajax.php',
				{
			    parameters: {action: 'detail', id: id, lang: jezik},
			    onSuccess: function(transport)
					 {
						$('popup').update(transport.responseText);
						$('popup').style.display="block";
						//prikažemo sivo ozadje
						background('on');
				    },
			    on800: function(transport)
					 {
						 ERROR.display(transport.responseText);
					 }
				});
		}
		//skrijemo detail
		else
		{
			$('popup').style.display="none";
			$('popup').update("");
			//skrijemo sivo ozadje
			background('off');
		}
	}

	/* funkcija spremeni jezik detail pogleda */
	function detail_language(jezik, id) {
		if($('lang')) {
			$('lang').value = jezik;
			//ponovno kličemo detail
			detail('on', id);
		}
	}

	/* funkcija prekopira obstoječi item v novega z istimi vrednostmi (klicano iz detailnega pregleda) */
	function copyNew(id) {
		var modpath = $F('modpath');
		new Ajax.Request(modpath+'/ajax.php',
			{
		    parameters: {action: 'copynew', id: id},
		    onSuccess: function(transport)
				 {
					//odpremo editor z prekopiranim vnosom
					editor('on', '1', transport.responseText);
			    },
		    on800: function(transport)
			 {
				 ERROR.display(transport.responseText);
			 }
			});
	}

	/* funkcija generira oz. skrije popup z podrobnostmi o sliki v detailnem pogledu */
	function slikaPodrobno(id,action) {
		//prikažemo popup
		if(action == "off") {
			$("slika_"+id).removeClassName('pregled_slika_popup_on');
		}
		//skrijemo popup
		else {
			$("slika_"+id).addClassName('pregled_slika_popup_on');
		}
	}
/* ************************************************************************** */

/* EDITOR																							*/
/* ************************************************************************** */
	/* funkcija generira editor okno */
	function editor(mode, stopnja, editid)	{
		//editor je vključen
		if(mode == 'on') {
			//če ni nastavljene stopnje prikažemo prvo
			if(!stopnja) {
				stopnja = 1;
			}
			//preverimo če je podan editid, če ni ga poberemo s strani (oz mu določimo vrednost)
			if(editid) {
				id = editid;
			}
			else {
				//editidja ni, določimo mu prazno vrednost
				if(!$('editid')) {
					id = 0;
				}
				//dobimo editid iz DOMa
				else {
					id = $F('editid');
				}
			}
			//preverimo če je aktiven kakšen jezik, drugače določimo slovenščino (kot primarni jezik)
			if($('lang')) {
				var lang = $F('lang');
			}
			else {
				var lang = "slo";
			}

			//pošljemo poizvedbo v databazo
			var modpath = $F('modpath');
			new Ajax.Request(modpath+'/ajax.php',
				{
			    parameters: {action: 'editor', stopnja: stopnja, id: id, lang: lang},
			    onSuccess: function(transport)
					 {
						//prikažemo okno in ga napolnimo z vsebino
						$('popup').update(transport.responseText);
						$('popup').style.display="block";

						//preverimo če gre za richEditor
						if($('richeditor')) {
							if($('richeditor').value == "true") {
								//gre za richEditor (kličemo funkcijo, ki zažene tinyMCE)
								richTextarea();
							}
						}
						//preverimo če gre za izbirni datum
						if($('selectdatum')) {
							if($('selectdatum').value == "true") {
								//gre za izbirni datum (kličemo funkcijo, ki zažene datepicker)
								datumPicker();
							}
						}

						//prikažemo sivo ozadje
						background('on');
				    },
			    on800: function(transport)
				 {
					 ERROR.display(transport.responseText);
				 }
				});
		}
		//editor je izključen
		else {
			//odstranimo morebitne odprte koledarčke
			$$('.datepicker').each(function(koledarcek)
			{
				koledarcek.remove();
			});

			//skrijemo okno in odstranimo sivo ozadje
			$('popup').style.display="none";
			$('popup').update("");
			background('off');
		}
	}

	/* funkcija shrani posamezno stopnjo v editorju */
	function editor_save(stopnja, mode, required) {
		//preverimo če gre za objavo
		if(mode == 'objava')	{
			parameter = '&objava=1';
		}
		else {
			parameter = '';
		}
		//če je aktiven RichTextEditor
		if($('richeditor').value == "true")
		{
			//pokličemo funkcijo, ki shrani podatke iz tinyMCEja v prvotno textareo
			save_richeditor();
		}
		//dobimo podatke iz DOMa
		var id = $F('editid');
		var lang = $F('lang');
		var modpath = $F('modpath');

		//pošljemo podatke na server preko ajaxa
		new Ajax.Request(modpath+'/ajax.php',
		{
		 parameters: $('editor_form').serialize()+"&action=editor_save&id="+id+"&required="+required+"&lang="+lang+parameter,
	    onSuccess: function(transport)
		 {
			//če gre za zaključno fazo v editorju, zapremo editor in osvežimo listing
			if(mode == 'objava' || mode == 'osnutek') {
				editor('off');
				razvrsti();
			}
			//gre za vmesno stopnjo v editorju
			else
			{
				//popravimo editid polje v DOMu
				$('editid').value = transport.responseText;
				//osvežimo editor na sledečo stopnjo
				editor('on', stopnja);
			}
	    },
	    on800: function(transport)
		 {
		 	ERROR.display(transport.responseText);
		 }
		});
	}

	/* funkcija preveri če so izpolnjena vsa potrebna polja v editorju */
	function editor_check(stopnja) {
		var required = $('editor_form').select('.required');
		var error = 0;
		var zahtevan = "ok";

		//preverimo vsa polja z classom required
		required.each(function(item)
		{
			if(item.value == "")
			{
				zahtevan = "napaka";
				/*error = 1;*/
				//$(item.name+"_opozorilo").update("(vrednost ne sme biti prazna)");
			}
		});

		if(!error) {
			//shranimo stopnjo
			editor_save(stopnja, "", zahtevan);
		}
	}

	/* funkcija zapre editor in osveži listing */
	function editor_zapri() {
		editor('off');
		razvrsti();
	}

	/* funkcija popravi vrednost lang polja v DOMu in osveži editorja */
	function editor_language(jezik) {
		if($('lang'))
		{
			editor_check($F('stopnja'));
			$('lang').value = jezik;
		}
	}

	/* funkcija doda novo polje v editor */
	function dodajPolje(target){

		//preverimo kakšno je število polj
		var numFields = parseInt($F('num_fields')) + 1;
		//updejtamo skrito polje z novim številom polj
		$('num_fields').value = numFields;


		//generiramo elemente
		var tr = new Element('tr');
		tr.appendChild(new Element('th'));
		var naslov = $F('field_name')+" "+(numFields+parseInt($F('num_old_fields')));
		tr.appendChild(new Element('th').update(naslov));
		$(target).appendChild(tr);
		var tr = new Element('tr');
		tr.appendChild(new Element('td', {'class': 'editor_lang_znakec_off'}));
		//generiramo input polje
		var poljename = "n_"+$F('field_name').toLowerCase()+"_"+numFields;
		var input = new Element('input', {'class': 'editor_input_text', 'type': 'text', 'name':poljename});

		tr.appendChild(new Element('td').appendChild(input));
		$(target).appendChild(tr);

		background('on');
	}

/* ************************************************************************** */

/* UPLOAD DATOTEK														       					*/
/* ************************************************************************** */

	/* funkcija pripravi osnovo za upload datotek */
	function InstallUpload() {
		if($('editid') != '0') {
			var modpath = $F('modpath');
			var id = $F('editid');
			//generiramo swfupload z parametri
			var swfu = new SWFUpload(
					{
						upload_url: '../'+modpath+'/ajax.php',
						post_params: {"id": id, "action": "upload", "tip": $F('tip'), "PHPSESSID" : $F('session')},

						file_size_limit : $F('file_max_size'),
						file_types : $F('file_types'),
						file_types_description : "Dovoljene datoteke",
						file_upload_limit : "0",

						swfupload_loaded_handler : uploadReady,
						file_queue_error_handler : fileQueueError,
						file_dialog_complete_handler : fileDialogComplete,
						upload_progress_handler : uploadProgress,
						upload_error_handler : uploadError,
						upload_success_handler : uploadSuccess,
						upload_complete_handler : uploadComplete,

						flash_url : "inc/swfupload_f9.swf"
					});
		}
	}

	/* funkcija prikaže okno za izbiro datoteke, takoj potem ko je inicializiran swfupload
	 * klicano iz InstallUpload()
	 */
	function uploadReady() {
		this.selectFile();
	}

	/* funkcija zgenerira napako, v primeru da gre kaj narobe pri uploadu
	 * klicano iz InstallUpload()
	 */
	function fileQueueError(fileObj, error_code, message) {
		switch(error_code)
		{
			case SWFUpload.QUEUE_ERROR.QUEUE_LIMIT_EXCEEDED:
				opozorilo = "poskusili ste naložiti preveč datotek!";
			break;
			case SWFUpload.QUEUE_ERROR.ZERO_BYTE_FILE:
				opozorilo = "datoteka je prazna!";
			break;
			case SWFUpload.QUEUE_ERROR.FILE_EXCEEDS_SIZE_LIMIT:
				opozorilo = "datoteka je prevelika!";
			break;
			case SWFUpload.QUEUE_ERROR.INVALID_FILETYPE:
				opozorilo = "datoteka je neveljavnega tipa!";
			break;
			default:
				opozorilo = "neznana napaka";
			break;
		}
		//izpišemo error v popupu
		ERROR.display(opozorilo);
	}

	/* funkcija preveri če gre za upload samo ene datoteke, ter začne prenos ponovno če gre za več datotek
	 * klicano iz InstallUpload()
	 */
	function fileDialogComplete(num_files_queued){
		if (num_files_queued > 0)
		{
			this.startUpload();
		}
	}

	/* funkcija prikaže status prenosa datoteke, med tem ko se le ta prenaša
	 * klicano iz InstallUpload()
	 */
	function uploadProgress(fileObj, bytesComplete, bytesTotal)	{
		$('upload_button').disable();
		if($('upload_status')) {
			var percent = Math.ceil((bytesComplete / bytesTotal) * 100);
			percent = percent-1;
			//periodično popravljamo procente in status
			$('upload_status').update("prenašam, ");
			$('upload_procent').update(percent+"%");
		}
	}

	/* funkcija se izpiše, ko server vrne rezultat (akcija je odvisna od rezultata)
	 * klicano iz InstallUpload()
	 */
	function uploadSuccess(fileObj, server_data)	{
		if(server_data == "ok")	{
			$('upload_procent').update("100%");
			$('upload_status').update("");
			//osvežimo stopnjo v editorju
			editor_check($F('stopnja'));
		}
		else {
			ERROR.display(server_data);
			//osvežimo stopnjo v editorju
			editor_check($F('stopnja'));
		}
	}

	/* funkcija se izpiše, ko je prenos končan (pri 99% poteka interakcija na serverju)
	 * klicano iz InstallUpload()
	 */
	function uploadComplete(fileObj) {
		//prenos je končan izpišemo 100%
		$('upload_procent').update("100%");
		$('upload_status').update("");
	}

	/* funkcija izpiše error med prenosom v statusno vrstico
	 * klicano iz InstallUpload()
	 */
	function uploadError(fileObj, error_code, message) {
		$('upload_status').update("napaka med prenosom datoteke!");
	}

/* ************************************************************************** */

/* RTEditor (FCKeditor)																			*/
/* ************************************************************************** */
	/* inicializiramo FCKeditor */
	function richTextarea(){
		//zgeneriramo FCKeditor v vsakega od pripravljenih polj
		$$('.richtextarea').each(function(polje)
		{
			//generiranje samega RTEditorja
			var editor = new FCKeditor(polje.id) ;
			editor.BasePath = "inc/fckeditor/" ;
			editor.ReplaceTextarea();
		});
	}


	/* inicializiramo tinyMCE */
	/*function richTextarea(){
		//klican objekt iz tiny_mce.js
		tinyMCE.init({
			theme : "simple",
			mode : "textareas",
			editor_selector : "richtextarea"
		});
	}*/

	/* vrnemo vsebino iz RTEditorja v textareo, ki je klicala RTEditor */
	function save_richeditor(){
		//preberemo vsebino vsakega FCKeditorja in jo zapišemo v prvotno polje
		$$('.richtextarea').each(function(polje)
		{
			var poljeid = polje.id;
			var poljename = polje.name;

			//odstranimo obstoječ element
			$(polje.id).remove();

			//generirano nov hidden element, ki ga napolnimo z vrednostjo editorja
			var editor = FCKeditorAPI.GetInstance(poljeid);
			var value = editor.GetXHTML(true);
			var input = new Element('input', { 'id': poljeid, 'name': poljename, 'type': 'hidden', 'value': value});
			$('editor_form').appendChild(input);
		});
	}
/* ************************************************************************** */

/* Date picker																						*/
/* ************************************************************************** */
	/* funkcija zgenerira popupe za izbiro datumov */
	function datumPicker() {

		//inicializiramo vsa polja z datumom
		$$('.datumPicker').each(function(datum)
		{
			//klican objekt iz datepicker.js
			new DatePicker ({
			relative	: datum,
			//nastavitve za datepicker
			disableFutureDate : false,
			enableCloseEffect : false,
			enableShowEffect : false,
			});
		});
	}
/* ************************************************************************** */

/* ZGODOVINA SPREMEMB																			*/
/* ************************************************************************** */

	/* funkcija zgenerira zgodovino sprememb */
	function zgodovina_sprememb(mode, id) {
		//prikaže zgodovino
		if(mode == 'on') {
			//če je klic iz editorja je id enak editid
			if($('editid')) {
				id = $F('editid');
			}
			new Ajax.Request('sys/modul_lib/ajax.php',
			{
			   parameters: {action: 'zgodovina', id: id},
				onSuccess: function(transport)
		 		{
					$('ospopup').update(transport.responseText);
					$('ospopup').style.display="block";
			   },
			   on800: function(transport)
				{
					ERROR.display(transport.responseText);
				}
			});
		}
		//skrijemo zgodovino
		else
		{
			$('ospopup').style.display="none";
			$('ospopup').update("");
		}
	}
/* ************************************************************************** */

/* OSEBNE NASTAVITVE																				*/
/* ************************************************************************** */

	/* funkcija prikaže in zgenerira vsebino osebnih nastavitev */
	function osebne_nastavitve(mode)	{
		//prikaže osebne nastavitve
		if(mode == 'on') {
			new Ajax.Request('sys/modul_lib/ajax.php',
				{
			    parameters: {action: 'osebne_nastavitve'},
			    onSuccess: function(transport)
				 {
					$('ospopup').update(transport.responseText);
					$('ospopup').style.display="block";
					//prikaže sivo ozadje
					background('on');
			    },
			    on800: function(transport)
				 {
					 ERROR.display(transport.responseText);
				 }
				});
		}
		//skrije osebne nastavitve
		else {
			$('ospopup').style.display="none";
			$('ospopup').update("");
			//skrije sivo ozadje
			background('off');
		}
	}

	/* shranimo osebne nastavitve */
	function osebne_nastavitve_save(){
		new Ajax.Request('sys/modul_lib/ajax.php',
		{
		 parameters: $('os_form').serialize()+"&action=osebne_save",
	    onSuccess: function(transport)
			 {
				//zapremo osebne nastavitve
				osebne_nastavitve('off');
		    },
	    on800: function(transport)
			 {
			 	ERROR.display(transport.responseText);
			 }
		});
	}

	/* funkcija preveri če so osebne nastavitve pravilno izpolnjene */
	function osebne_nastavitve_check()	{
		var required = $('os_form').serialize()
		var error = 0;

		//ime in priimek
		if($('ime_priimek').value == "")	{
			error = 1;
			$("ime_priimek_opozorilo").update("(vrednost ne sme biti prazna)");
		}
		//geslo1 je enako geslo2
		if($('geslo_1').value != $('geslo_2').value)	{
			error = 1;
			$("geslo_opozorilo").update("(potrditveno geslo ni enako nastavljenemu)");
		}

		if(!error)
		{
			//če ni napak shranimo
			osebne_nastavitve_save();
		}
	}
/* ************************************************************************** */

/* Funkcije za preverjanje brskalnikov in vidnega polja         					*/
/* ************************************************************************** */

	/* funkcija preveri, če je brskalnik primeren za uporabo CMSja (podpira Ajax) */
	function BrowserVerzija() {
		if(!window.XMLHttpRequest){
			alert("CMS ne podpira vašega brskljalnika");
			window.location = "http://www.cms.zabec.net/faq#browser";
		}
	}

	/* funkcija pridobi podatke o velikosti okna, kompatibilna z vsemi brskalniki
	 * avtor skripta je neznan
	 */
	function getPageSize(){
		var xScroll, yScroll;
		if (window.innerHeight && window.scrollMaxY) {
			xScroll = window.innerWidth + window.scrollMaxX;
			yScroll = window.innerHeight + window.scrollMaxY;
		}
		//vsi brkalniki razen Explorer Mac
		else if (document.body.scrollHeight > document.body.offsetHeight) {
			xScroll = document.body.scrollWidth;
			yScroll = document.body.scrollHeight;
		}
		//brskalnik Explorer Mac...deluje tudi v Explorer 6 Strict, Mozilla in Safari
		else {
			xScroll = document.body.offsetWidth;
			yScroll = document.body.offsetHeight;
		}

		var windowWidth, windowHeight;

		//vsi brskalniki razen Explorer
		if (self.innerHeight) {
			if(document.documentElement.clientWidth) {
				windowWidth = document.documentElement.clientWidth;
			}
			else {
				windowWidth = self.innerWidth;
			}

			windowHeight = self.innerHeight;
		}
		// Explorer 6 Strict Mode
		else if (document.documentElement && document.documentElement.clientHeight) {
			windowWidth = document.documentElement.clientWidth;
			windowHeight = document.documentElement.clientHeight;
		}
		// ostali brskalniki
		else if (document.body) {
			windowWidth = document.body.clientWidth;
			windowHeight = document.body.clientHeight;
		}

		// majhne strani z skupno višino manjšo od širine viewpointa
		if(yScroll < windowHeight){
			pageHeight = windowHeight;
		} else {
			pageHeight = yScroll;
		}

		// majhne strani z skupno širino manjšo od viewpointa
		if(xScroll < windowWidth){
			pageWidth = xScroll;
		} else {
			pageWidth = windowWidth;
		}

		// vrnemo vse spremenljivke
		arrayPageSize = new Array(pageWidth,pageHeight,windowWidth,windowHeight)
		return arrayPageSize;
	}

	/* funkcija prikaže ali odstrani sivo ozadje */
	function background(mode) {
		//vključimo ozadje
		if(mode == 'on'){
			//dobimo podatke o velikosti brskalnikovega okna
			var dokument = getPageSize();

			$('ozadje').style.height=dokument[1]+'px';
			$('ozadje').style.width=dokument[0]+'px';
			$('ozadje').style.display = 'inline';
		}
		//izključimo ozadje
		else {
			$('ozadje').style.display = 'none';
		}
	}
/* ************************************************************************** */


/* TEMP FUNKCIJE */

/* funkcija naredi poizvedbo v databazo in izpiše število osnutkov */
function prikaz_osnutek(){
	var modpath = $F('modpath');
	new Ajax.Request(modpath+'/ajax.php',
		{
	    parameters: {action: 'prikaz_osnutek'},
	    onSuccess: function(transport)
		 {
			$F(stevilo_osnutkov) = transport.responseText;
	    },
	    on800: function(transport)
		 {
		 	ERROR.display(transport.responseText);
		 }
		});
}

function Infobox(mode){
	var infobox = $('infobox_text');

	if(mode == "on"){
		infobox.style.display = "block";
	}else{
		infobox.style.display = "none";
	}
}

function getScript(url)
{
	var scripts = new Element('script', { 'src': url, type: 'text/javascript' });

	var head = $A(document.getElementsByTagName('head')).map(Element.extend)
	head[0].appendChild(scripts);
}
/*****************/