function TThrow(a) {
	this.message=a
}
function TUser(b,a) {
	this.username="";
	this.password="";
	this.admin=a;
	this.user_id=b;
	this.limitRez=0;
	this.limitZam=0;
	this.limitKolejki=0;
}
appUtils= {
	debugSessionStart:false,
    debugSessionName:"netbeans-xdebug",
    baseUrl:"",
    selectedDB:0,
    user:new TUser(0,false),
    isSet:
        function(a) {
            return((typeof(a)!="undefined")&&(a!=null))},
            showMessage:function(e,d,c,b) {
                 var a=jQuery("#modalFrame");
				    if(!this.isSet(b)){
					  b=100
					}
				    if(!this.isSet(c)){
					  c="auto"
					}
					a.html(e);
					a.dialog({autoOpen:false,modal:true});
					switch(d){
					  case"error":a.dialog("option","title","B\u0142\u0105d");
					  break;
					  case"warrning":a.dialog("option","title","Ostrze\u017cenie");
					  break;
					  default:a.dialog("option","title",d);
					  break
					}
					a.dialog("option","buttons",{"  OK  ":function(){jQuery(this).dialog("close")}});
					a.dialog("option","zIndex",b);
					a.dialog("option","width",c);
					a.dialog("option","height","auto");
					a.dialog("open");
					jQuery("button.ui-state-default.ui-corner-all.ui-state-focus").removeClass("ui-state-focus")
	        },
	hideMessage:
		function() {
			jQuery("#modalFrame").dialog("close")
		},
	changeDB:
		function(){
			        if((appUtils.selectedDB==0)||confirm("Zmiana bazy danych spowoduj\u0119 utrat\u0119 wszystkich wyników wyszukiwania oraz wylogowanie z konta. Kontynuowa\u0107?")) {
					    try {
						    appUtils.selectedDB=parseInt(jQuery(this).val());
						    var b={format:"json",baza_id:appUtils.selectedDB};
							if(this.debugSessionStart){b.XDEBUG_SESSION_START=this.debugSessionName}
							jQuery.getJSON(appUtils.baseUrl+"/index/changedb",b,function(d) {
							    if(appUtils.isSet(d.biblioteka)) {
							        jQuery("#header_bottom").html(d.biblioteka);
									appUtils.selectedDB=d.biblioteka_id;
									if(appUtils.user.user_id==0){jQuery("#btnKatalog").trigger("click")}
									else{appUtils.wylogujUser()}
									appUtils.changeLogo(appUtils.selectedDB);
									var c=new Date();
									c.setTime(c.getTime()+(7*24*60*60*1000));
									document.cookie="database_id="+appUtils.selectedDB+"; expires="+c.toGMTString()
								}
								else {
								    jQuery("#dbselect").selectOptions(appUtils.selectedDB,true);
									throw new TThrow("Nie mo\u017cna zmieni\u0107 parametrów bazy danych. Proszę skontaktować się z administratorem.")
								}
							})
						}
						catch(a){appUtils.showMessage(a.message,"error",300)}
					}
		},
	refreshSelectLocal:
		function(b,a) {
			jQuery(a).removeOption(/./);
			jQuery(a).addOption(b,false)
		},
	refreshSelect:
		function(b,a) {
					jQuery(a).attr("disabled","true");
					var c= {format:"json",database_id:appUtils.selectedDB};
					if(this.debugSessionStart){c.XDEBUG_SESSION_START=this.debugSessionName}
						jQuery.getJSON(
									b,
									c,
									function(d) {
										appUtils.refreshSelectLocal(d.options,a);
										jQuery(a).removeAttr("disabled")
									})
		},
	zalogujAdmin:
	    function() {
					function logujAdmin(mfa) {
					    mfa.dialog("close");
						var b={
							format:"json",username:mfa.find("input[name=username]").val(),
							password:MD5(mfa.find("input[name=password]").val())
						};
						if(this.debugSessionStart) 
							{ b.XDEBUG_SESSION_START=this.debugSessionName }
						if (!b.username)
							{ appUtils.showMessage("Nie podano nazwy u\u017cytkownika.","warrning",300); }
						jQuery.getJSON(
						        appUtils.baseUrl+"/index/adminlogin",
								b,
								function(c) {
								    if(appUtils.isSet(c)&&appUtils.isSet(c.user_id)) {
									    if(c.user_id!=0) {
										    appUtils.user.admin=true;
											appUtils.user.username=mfa.find("input[name=username]").val();
											appUtils.user.password=mfa.find("input[name=password]").val();
											mfa.html("");
											appUtils.user.user_id=c.user_id;
											jQuery("#content").load(appUtils.baseUrl+"/administrator/");
											jQuery("#dbselect").attr("disabled",true);
											jQuery("#btnPomoc").hide();
											jQuery("#btnZestawienia").hide();
											jQuery("#btnKartoteka").hide();
											jQuery("#btnKatalog").hide();
											jQuery("#btnUser").hide();
											jQuery("#btnHPomoc").hide();
											jQuery("#btnHZestawienia").hide();
											jQuery("#btnHKartoteka").hide();
											jQuery("#btnHKatalog").hide();
											jQuery("#btnHUser").hide();
											jQuery("#opis_username").html("Jesteś zalogowany jako ");
											jQuery("#username").html("Administrator");
											jQuery("#login_text").html("Wyloguj z konta administratora");
											jQuery("#opiswyboru").html("Panel sterowania");
											jQuery("#login").unbind("click");
											jQuery("#login").bind("click",null,appUtils.wylogujAdmin);
											document.getElementById("login").src="images/center/admin_out1.jpg";
											document.getElementById("login").title="Wyloguj z konta administratora";
											document.getElementById("login").alt="Wyloguj z konta administratora";
											document.getElementById("login").onmouseout=function(){this.src="images/center/admin_out1.jpg"}
											document.getElementById("login").onmouseover=function(){this.src="images/center/admin_out2.jpg"}
											jQuery("#btnUser").attr("src", "images/left/user_account1.jpg");
											jQuery("#btnUser").mouseover(
												function () { jQuery("#btnUser").attr("src", "images/left/user_account2.jpg"); } );
											jQuery("#btnUser").mouseout(
												function () { jQuery("#btnUser").attr("src", "images/left/user_account1.jpg"); } );
										}
										else {
											appUtils.showMessage("Podano z\u0142\u0105 nazw\u0119 u\u017cytkownika lub has\u0142o.","warrning",300) 
										}
									}
								});
					}
				    var a=jQuery("#modalFrame");
					a.html('<table><tr><td>Użytkownik:</td><td><input type="text" name="username" /></td></tr><tr><td>Hasło:</td><td><input type="password" name="password" /></td></tr></table>');
					a.dialog({autoOpen:false,modal:true,zIndex:100});
					a.dialog("option","buttons", {
					        Zaloguj: function() {
								logujAdmin(jQuery(this));
							},
							Anuluj: function() {
								jQuery(this).dialog("close")
							}
					});
					a.dialog("option","title","Zaloguj jako administrator");
					a.dialog("option","width",500);
					a.keydown(function(e) { 
						if ( (jQuery(this).dialog("option","title") == "Zaloguj jako administrator") && (e.keyCode == '13') ) {
							logujAdmin(jQuery(this)); 
						}
					} );
					a.dialog("open");
		},
	wylogujAdmin:
		function() {
				    var
					    a={format:"json"};
						if(this.debugSessionStart) {a.XDEBUG_SESSION_START=this.debugSessionName}
						jQuery.getJSON(
						            appUtils.baseUrl+"/index/adminlogout",
									a,
									function(b) {
									    if(b.user_id==0) {
										    appUtils.user.username="";
											appUtils.user.password="";
											appUtils.user.admin=false;
											appUtils.user.user_id=0;
											jQuery("#btnPomoc").show();
											jQuery("#btnZestawienia").show();
											jQuery("#btnKartoteka").show();
											jQuery("#btnKatalog").show();
											jQuery("#btnUser").show();
											jQuery("#btnHPomoc").show();
											jQuery("#btnHZestawienia").show();
											jQuery("#btnHKartoteka").show();
											jQuery("#btnHKatalog").show();
											jQuery("#btnHUser").show();
											jQuery("#dbselect").attr("disabled",false);
											appUtils.selectedDB=0;
											jQuery("#dbselect").trigger("change");
//											appUtils.refreshSelect(appUtils.baseUrl+"/index/serwerlist", document.getElementById("dbselect"));
											jQuery("#login_text").html("Zaloguj jako administrator");
											jQuery("#username").html("GO\u015a\u0106");
											jQuery("#login").unbind("click");
											jQuery("#login").bind("click",null,appUtils.zalogujAdmin);
											document.getElementById("login").src="images/center/admin1.jpg";
											document.getElementById("login").title="Zaloguj na konto administratora";
											document.getElementById("login").alt="Zaloguj na konto administratora";
											document.getElementById("login").onmouseout=function(){this.src="images/center/admin1.jpg"};
											document.getElementById("login").onmouseover=function(){this.src="images/center/admin2.jpg"};
											jQuery("#login").hide()
										}
									})
		},
	zalogujUser:
		function() {
			function logujUser(mfu) {
				mfu.dialog("close");
				var 
					b={
						format:"json",
						database:appUtils.selectedDB,
						username:mfu.find("input[name=username]").val(),
						password:MD5(mfu.find("input[name=password]").val())
					};
				if(this.debugSessionStart){b.XDEBUG_SESSION_START=this.debugSessionName}
				if (!b.username)
					appUtils.showMessage("Nie podano nazwy u\u017cytkownika.","warrning",300);
				jQuery.getJSON(
						appUtils.baseUrl+"/index/login",
						b,
						function(c) {
							if(appUtils.isSet(c)&&appUtils.isSet(c.user_id)) {
								if(c.user_id!=0) {
									if(appUtils.user.admin) {appUtils.wylogujAdmin()}
									appUtils.user.admin=false;
									appUtils.user.username=mfu.find("input[name=username]").val();
									appUtils.user.password=mfu.find("input[name=password]").val();
									mfu.html("");
									appUtils.user.user_id=c.user_id;
									appUtils.user.limitRez=c.limitRez;
									appUtils.user.limitZam=c.limitZam;
									appUtils.user.limitKolejki=c.limitKolejki;
									jQuery("#btnUser").attr("src", "images/left/user_account1_log.jpg");
									jQuery("#btnUser").mouseover(
										function () { jQuery("#btnUser").attr("src", "images/left/user_account2_log.jpg"); } );
									jQuery("#btnUser").mouseout(
										function () { jQuery("#btnUser").attr("src", "images/left/user_account1_log.jpg"); } );
									jQuery("#opis_username").html("Jesteś zalogowany jako ");
									jQuery("#username").html(c.imie+" "+c.nazwisko);
									//jQuery("#modalFrame").html("");
									jQuery("#content").load(appUtils.baseUrl+"/user");
								}
								else {
									appUtils.showMessage("Podano z\u0142\u0105 nazw\u0119 u\u017cytkownika lub has\u0142o.","warrning",400);
								}	
							}
						});
			}
			var	a=jQuery("#modalFrame");
			a.html('<table><tr><td>Użytkownik:</td><td><input type="text" name="username" /></td></tr><tr><td>Hasło:</td><td><input type="password" name="password" /></td></tr></table>');
			a.dialog({autoOpen:false,modal:true,zIndex:100});
			a.dialog(
				"option",
				"buttons",
				{
					Zaloguj: function() { logujUser(jQuery(this)); },
					Anuluj: function(){jQuery(this).dialog("close")}
				});
			a.dialog("option","title","Logowanie do konta u\u017cytkownika");
			a.dialog("option","width",400);
			a.keydown(function(e) { 
				if ( (jQuery(this).dialog("option","title") == "Logowanie do konta u\u017cytkownika") && (e.keyCode == '13') ) { 
					logujUser(jQuery(this)); 
				}
			} );
			a.dialog("open");
		},
	zalogujUserRez:
		function(msg) {
			function logujUserRez(mfur) {
				mfur.dialog("close");
				var b={
					format:"json",
					database:appUtils.selectedDB,
					username:mfur.find("input[name=username]").val(),
					password:MD5(mfur.find("input[name=password]").val())
				};
				if(this.debugSessionStart)
					{b.XDEBUG_SESSION_START=this.debugSessionName}
				if (!b.username)
					{ appUtils.zalogujUserRez("Nie podano nazwy użytkownika."); }
				jQuery.getJSON(
					appUtils.baseUrl+"/index/login",
					b,
					function(c) {
						if(appUtils.isSet(c)&&appUtils.isSet(c.user_id)) {
							if(c.user_id!=0) {
								if(appUtils.user.admin)
									{appUtils.wylogujAdmin()}
								appUtils.user.admin=false;
								appUtils.user.username=mfur.find("input[name=username]").val();
								appUtils.user.password=mfur.find("input[name=password]").val();
								mfur.html("");
								appUtils.user.user_id=c.user_id;
								appUtils.user.limitRez=c.limitRez;
								appUtils.user.limitZam=c.limitZam;
								appUtils.user.limitKolejki=c.limitKolejki;
								jQuery("#btnUser").attr("src", "images/left/user_account1_log.jpg");
								jQuery("#btnUser").mouseover(
									function () { jQuery("#btnUser").attr("src", "images/left/user_account2_log.jpg"); } );
								jQuery("#btnUser").mouseout(
									function () { jQuery("#btnUser").attr("src", "images/left/user_account1_log.jpg"); } );
								jQuery("#opis_username").html("Jesteś zalogowany jako ");
								jQuery("#username").html(c.imie+" "+c.nazwisko);
								//jQuery("#modalFrame").html("");
								jQuery("#login_u").show();
								appUtils.showMessage("Jesteś zalogowany, możesz dokonać rezerwacji albo zamówienia.","Informacja",500);
							}
							else {
								appUtils.showMessage("Podano z\u0142\u0105 nazw\u0119 u\u017cytkownika lub has\u0142o.","warrning",400);
							}	
						}
					}
				)
			}
			var a=jQuery("#modalFrame");
			if (!msg) 
				{ a.html('<div id="log_rez">Nie mo\u017cesz zarezerwowa\u0107 lub zamówić pozycji, poniewa\u017c nie jesteś zalogowany!</div><br />&nbsp;Logowanie do konta u\u017cytkownika<br /><br /><table><tr><td>Użytkownik:</td><td><input type="text" name="username" /></td></tr><tr><td>Hasło:</td><td><input type="password" name="password" /></td></tr></table>'); }
			else	
				{ a.html('<div id="log_rez">'+msg+'</div><br />&nbsp;Logowanie do konta u\u017cytkownika<br /><br /><table><tr><td>Użytkownik:</td><td><input type="text" name="username" /></td></tr><tr><td>Hasło:</td><td><input type="password" name="password" /></td></tr></table>'); }
			a.dialog({autoOpen:false,modal:true,zIndex:100});
			a.dialog(
				"option",
				"buttons",
				{
					Zaloguj: function() { logujUserRez(jQuery(this)); },
					Anuluj: function(){jQuery(this).dialog("close")}
				});
			a.dialog("option","title","Ostrze\u017cenie");
			a.dialog("option","width",575);
			a.keydown(function(e) { 
				if ( (jQuery(this).dialog("option","title") == "Ostrze\u017cenie") && (e.keyCode == '13') ) {
					logujUserRez(jQuery(this)); 
				}
			} );
			a.dialog("open");
		},
	wylogujUser:
		function() {
						var a= {format:"json"};
						if(this.debugSessionStart){a.XDEBUG_SESSION_START=this.debugSessionName}
						jQuery.getJSON(
								appUtils.baseUrl+"/index/logout",
								a,
								function(b) {
									if(!(appUtils.isSet(b)&&appUtils.isSet(b.user_id))) {
										appUtils.showMessage("Podczas wylogowywania nast\u0105pi\u0142 b\u0142\u0105d. Zamknij wszystkie okna przegl\u0105darki aby wyczy\u015bci\u0107 pami\u0119\u0107 z ewentualnych pozostawionych w niej hase\u0142 oraz zakończyć sesję z serwerem.","warrning",500)
									}
									appUtils.user.username="";
									appUtils.user.password="";
									appUtils.user.admin=false;
									appUtils.user.user_id=0;
									jQuery("#btnUser").attr("src", "images/left/user_account1.jpg");
									jQuery("#btnUser").mouseover(
										function () { jQuery("#btnUser").attr("src", "images/left/user_account2.jpg"); } );
									jQuery("#btnUser").mouseout(
										function () { jQuery("#btnUser").attr("src", "images/left/user_account1.jpg"); } );
									jQuery("#opis_username").html("Przeglądasz bibliotekę jako ");
									jQuery("#username").html("GO\u015a\u0106");
									appUtils.showMessage("Zostałeś wylogowany.","warrning",300);
									jQuery("#btnKatalog").trigger("click");
								})
		},
	getTableSzukajGrid:
		function(a) {
			return'<table id="'+a+'" class="scroll" cellpadding="0" cellspacing="0"></table><div id="'+a+'Control" class="scroll" style="text-align:center;"></div>'
		},
	setSzukajGrid:
		function(d,h,c,g,b,a,e) {
			var f="#"+d.id+"Control";
				return
					jQuery(d).jqGrid({
											url:c,
											datatype:"json",
											postData:a,
											mtype:"GET",
											colNames:g,
											colModel:b,
											shrinkToFit:true,
											pager:f,
											rowNum:5,
											rowList:[5,10,20],
											id:"id",
											height:"100%",
											width:h.clientWidth-15,
											rownumbers:true,
											sortname:e,
											sortorder:"asc",
											viewrecords:true,
											scrollOffset:0,
											imgpath:appUtils.baseUrl+"/jquery/images",
											caption:"Wyniki wyszukiwania",
											gridComplete:
												function() {
													var i=jQuery(d).getGridParam("records");
													if(i!=null){
														var j=parseInt(i.toString().charAt(i.toString().length-1));
														if(i==1){jQuery(d).setCaption("Znaleziono 1 pozycj\u0119")}
														else {
															if((j<5)&&(j!=0)){jQuery(d).setCaption("Znaleziono "+i+" pozycje")}
															else{jQuery(d).setCaption("Znaleziono "+i+" pozycji")}
														}
													}
													else{jQuery(d).setCaption("Nie znaleziono pozycji")}
												}
					}).navGrid(f,{edit:false,add:false,del:false,search:false})
		},
	getTableSzukajMasterGrid:
		function(b,a) {
			return'<table id="Master'+b+'" class="scroll" cellpadding="0" cellspacing="0"></table><div id="Master'+b+'Control" class="scroll" style="text-align:center";></div><h3>'+a+'</h3><table id="'+b+'" class="scroll" cellpadding="0" cellspacing="0"></table><div id="'+b+'Control" class="scroll" style="text-align:center;"></div>'
		},
	now:
		function() {
			return Math.round(new Date().getTime()/1000)
		},
	showInfo:
		function(b) {
						var a={format:"json",database_id:appUtils.selectedDB,katalog_id:b};
						if(this.debugSessionStart){a.XDEBUG_SESSION_START=this.debugSessionName}
						jQuery.getJSON(
									appUtils.baseUrl+"/katalog/informacja",
									a,
									function(c) {
										appUtils.showMessage(c.html,"Informacja bibliograficzna",900)
									})
		},
	changeLogo:
		function(a) {
			if(a==0) {
				jQuery("#biblio_logo img:eq(0)").attr("src",appUtils.baseUrl+"/logo/get?bazaid=0")
			}
			else {
				jQuery("#biblio_logo img:eq(0)").attr("src",appUtils.baseUrl+"/logo/get?bazaid="+a+"&nocache="+appUtils.now())
			}
		}/*,
	kryteria:
		function(valKryterium, valWarunek) {
			switch(valKryterium) {
				case '6':
					switch(valWarunek) {
						case '1': return 'Książka';									break;
						case '2': return 'Wydawnictwo ciągłe';						break;
						case '3': return 'Dokument elektroniczny';					break;
						case '4': return 'Film';									break;
						case '5': return 'Dokument dźwiękowy';						break;
						default: return 'Własne';
					}
				break;
				case '7':
					switch(valWarunek) {
						case "7": return 'Literatura popularno-naukowa';			break;
						case "3": return 'Lektury';									break;
						case "13": return 'Inne';									break;
						case "5": return 'Podręczniki i mat. dydaktyczne';			break;
						case "6": return 'Literatura piękna';						break;
						case "11": return 'Słowniki i encyklopedie';				break;
						case "12": return 'Albumy i atlasy';						break;
						case "14": return 'Literatura dziecięca';					break;
						case "15": return 'Literatura młodzieżowa';					break;
						case "16": return 'Literatura dla dorosłych';				break;
						case "17": return 'Literatura naukowa - ogólna';			break;
						case "18": return 'Literatura naukowa - bibliologiczna';	break;
						case "19": return 'Literatura naukowa - informatyczna';		break;
						case "20": return 'Literatura naukowa - psychologiczna';	break;
						case "21": return 'Literatura naukowa - filozoficzna';		break;
						case "22": return 'Literatura naukowa - religijna';			break;
						case "23": return 'Literatura naukowa - społeczna';			break;
						case "24": return 'Literatura naukowa - ekonomiczna';		break;
						case "25": return 'Literatura naukowa - prawnicza';			break;
						case "26": return 'Literatura naukowa - pedagogiczna';		break;
						case "27": return 'Literatura naukowa - ścisła';			break;
						case "28": return 'Literatura naukowa - przyrodnicza';		break;
						case "29": return 'Literatura naukowa - medyczna';			break;
						case "30": return 'Literatura naukowa - techniczna';		break;
						case "32": return 'Literatura naukowa - geograficzna';		break;
						case "33": return 'Literatura naukowa - biograficzna';		break;
						case "34": return 'Literatura naukowa - historyczna';		break;
						default: return 'Własne';
					}	
				break; 
				case '10':
					switch(valWarunek) {
						case '1': return 'Artykuł w czasopiśmie';					break;
						case '2': return 'Recenzja w czasopiśmie';					break;
						case '3': return 'Rozdział (fr.) w książce';				break;
						case '4': return 'Odrębna praca w książce';					break;
						case '5': return 'Dowolny mat. biblioteczny';				break;
						//case '0': return 'Artykuł w czasopiśmie';					break;
						//case '1': return 'Recenzja w czasopiśmie';				break;
						//case '2': return 'Rozdział (fr.) w książce';				break;
						//case '3': return 'Odrębna praca w książce';				break;
						//case '4': return 'Dowolny mat. biblioteczny';				break;
						default: return 'Własne';
					}
				break;
			}
		}
	*/	
};
staticData= {
	kryteriaKatalog: {
		"11":"Autor",
		"1":"Tytu\u0142",
		"15":"Has\u0142a",
		"6":"Typ dokumentu",
		"7":"Kategoria",
		"20":"Miejsce wydania",
		"23":"Wydawnictwo",
		"5":"Rok wydania",
		"8":"ISBN/ISSN/ISMN",
		"9":"ISSN serii",
		"10":"UKD",
		"21":"Sygnatura",
		"19":"Numer inwentarzowy",
		"24":"Tytu\u0142 serii"
	},
	kryteriaKartoteka: {
		"2":"Autor",
		"1":"Tytu\u0142",
		"12":"Has\u0142a",
		"10":"Typ dokumentu",
		"4":"Wydanie",
		"5":"Miejsce wydania",
		"6":"Rok wydania",
		"7":"Rocznik (tom)",
		"8":"Numer (zeszyt)",
		"9":"Strona (-y)"//,
		//"20":"Sygnatura",
		//"11":"Numer inwentarzowy"
	}
};
FileUpload=	{
	frame:
		function(f) {
			var e="f"+Math.floor(Math.random()*99999);
			var b=document.createElement("DIV");
			b.innerHTML='<iframe style="display:none" src="about:blank" id="'+e+'" name="'+e+'" onload="FileUpload.loaded(\''+e+"')\"></iframe>";
			document.body.appendChild(b);
			var a=document.getElementById(e);
			if(f&&typeof(f.onComplete)=="function") {
				a.onComplete=f.onComplete
			}
			return e
		},
	form:
		function(b,a) {
			b.setAttribute("target",a)
		},
	submit:
		function(a,b) {
			FileUpload.form(a,FileUpload.frame(b));
			if(b&&typeof(b.onStart)=="function") {
				return b.onStart()
			}
			else {
				return true
			}
		},
	loaded:
		function(c) {
			var a=document.getElementById(c);
			var b;
			if(a.contentDocument) {
				b=a.contentDocument
			}
			else {
				if(a.contentWindow) {
					b=a.contentWindow.document
				}
				else {
					b=window.frames[c].document
				}
			}
			if(b.location.href=="about:blank") {
				return
			}
			if(typeof(a.onComplete)=="function") {
				a.onComplete(b.body.innerHTML)
			}
		}
};
