1 //////////////////////////////////////////////////////////////////////////////
2 // BASIC FUNCTIONS FOR COOKIE MANAGEMENT //
3 //////////////////////////////////////////////////////////////////////////////
5 function basketCount(){
6 var valCookie = readCookie("bib_list");
8 var arrayRecords = valCookie.split("/");
9 if(arrayRecords.length > 0){
10 var basketcount = arrayRecords.length-1;
20 function writeCookie(name, val, wd) {
22 parent.opener.document.cookie = name + "=" + val + ";path=/";
25 parent.document.cookie = name + "=" + val + ";path=/";
29 function readCookieValue (str, val_beg) {
30 var val_end = str.indexOf(";", val_end);
33 return str.substring(val_beg, val_end);
36 function readCookie(name, wd) {
37 var str_name = name + "=";
38 var str_len = str_name.length;
41 str_cookie = parent.opener.document.cookie;
44 str_cookie = parent.document.cookie;
46 // fixed - getting the part of the basket that is bib_list
47 var cookie_parts = str_cookie.split(";");
48 for(var i=0;i < cookie_parts.length;i++) {
49 var c = cookie_parts[i];
50 while (c.charAt(0)==' ') c = c.substring(1,c.length);
51 if(c.indexOf(str_name) == 0) return c.substring(str_name.length,c.length);
56 function delCookie(name) {
58 exp.setTime(exp.getTime()-1);
60 parent.opener.document.cookie = name + "=null; path=/; expires=" + exp.toGMTString();
62 document.cookie = name + "=null; path=/; expires=" + exp.toGMTString();
66 ///////////////////////////////////////////////////////////////////
67 // SPECIFIC FUNCTIONS USING COOKIES //
68 ///////////////////////////////////////////////////////////////////
70 function openBasket() {
72 var nameCookie = "bib_list";
73 var valCookie = readCookie(nameCookie);
75 strCookie = nameCookie + "=" + valCookie;
81 var optWin = "status=yes,scrollbars=yes,resizable=yes,toolbar=no,location=yes,height="+iH+",width="+iW;
82 var loc = "/cgi-bin/koha/opac-basket.pl?" + strCookie;
83 var basket = open(loc, "basket", optWin);
84 if (window.focus) {basket.focus()}
87 showCartUpdate(MSG_BASKET_EMPTY);
91 function addRecord(val, selection,NoMsgAlert) {
92 var nameCookie = "bib_list";
93 var valCookie = readCookie(nameCookie);
96 if ( ! valCookie ) { // empty basket
97 valCookie = val + '/';
102 // is this record already in the basket ?
104 var arrayRecords = valCookie.split("/");
105 for (var i = 0; i < valCookie.length - 1; i++) {
106 if (val == arrayRecords[i]) {
116 showCartUpdate(MSG_RECORD_IN_BASKET);
120 valCookie += val + '/';
122 updateBasket(arrayRecords.length);
127 writeCookie(nameCookie, valCookie);
128 if (selection) { // when adding a selection of records
129 updateLink(val,"add");
133 showCartUpdate(MSG_RECORD_ADDED);
134 updateLink(val,"add");
140 function AllAreChecked(s){
141 if (! s.length) { return false;}
143 for (var i=0; i < l; i++) {
144 if(! s[i].checked) { return false; }
149 function SelectAll(){
150 if(document.bookbag_form.biblionumber.length > 0) {
151 var checky = AllAreChecked(document.bookbag_form.biblionumber);
152 var l = document.bookbag_form.biblionumber.length;
153 for (var i=0; i < l; i++) {
154 document.bookbag_form.biblionumber[i].checked = (checky) ? false : true;
159 function addMultiple(){
161 if(document.bookbag_form.biblionumber.length > 0) {
162 for (var i=0; i < document.bookbag_form.biblionumber.length; i++) {
163 if (document.bookbag_form.biblionumber[i].checked) {
164 c_value = c_value + document.bookbag_form.biblionumber[i].value + "/";
167 addSelRecords(c_value);
169 c_value = c_value + document.bookbag_form.biblionumber.value + "/";
170 addSelRecords(c_value);
174 function addSelRecords(valSel) { // function for adding a selection of biblios to the basket
175 // from the results list
176 var arrayRecords = valSel.split("/");
179 for (i=0;i<arrayRecords.length;i++) {
180 if (arrayRecords[i]) {
181 nbAdd += addRecord(arrayRecords[i], 1);
190 msg = nbAdd+" "+MSG_NRECORDS_ADDED+", "+(i-nbAdd)+" "+MSG_NRECORDS_IN_BASKET;
193 msg = nbAdd+" "+MSG_NRECORDS_ADDED;
198 msg = MSG_NO_RECORD_SELECTED;
201 msg = MSG_NO_RECORD_ADDED+" ("+MSG_NRECORDS_IN_BASKET+") !";
207 function showCartUpdate(msg){
208 // set body of popup window
209 $("#cartDetails").html(msg);
210 $("#cartmenuitem").html(MSG_IN_YOUR_CART + " " + basketCount());
212 setTimeout("hideCart()",2000);
215 function showListsUpdate(msg){
216 // set body of popup window
220 function selRecord(num, status) {
221 var str = document.myform.records.value
226 str = delRecord(num, str);
229 document.myform.records.value = str;
232 function delSingleRecord(biblionumber){
233 var nameCookie = "bib_list";
234 var valCookie = readCookie(nameCookie);
235 var arrayRecords = valCookie.split("/");
236 var pos = jQuery.inArray(biblionumber,arrayRecords);
237 arrayRecords.splice(pos,1);
238 valCookie = arrayRecords.join("/");
239 writeCookie( nameCookie, valCookie );
240 updateBasket( arrayRecords.length-1 );
241 updateLink(biblionumber,"del");
242 showCartUpdate(MSG_RECORD_REMOVED);
245 function delSelRecords() {
248 var nameCookie = "bib_list";
249 var valCookie = readCookie(nameCookie, 1);
251 var str = document.myform.records.value;
254 var str2 = valCookie;
256 s = str.indexOf("/");
258 num = str.substring(0, s);
259 str = delRecord(num,str);
260 str2 = delRecord(num,str2);
261 updateLink(num,"del",top.opener);
267 if (str2.length == 0) { // equivalent to emptying the basket
269 rep = confirm(MSG_CONFIRM_DEL_BASKET);
271 delCookie(nameCookie);
272 document.location = "about:blank";
273 updateBasket(0,top.opener);
279 writeCookie(nameCookie, str2, 1);
286 var nameCookie = "bib_list";
287 var valCookie = readCookie(nameCookie, 1);
288 strCookie = nameCookie + "=" + valCookie;
289 var arrayRecords = valCookie.split("/");
290 updateBasket(arrayRecords.length-1,top.opener);
291 document.location = "/cgi-bin/koha/opac-basket.pl?" + strCookie;
294 alert(MSG_NO_RECORD_SELECTED);
298 function delRecord (n, s) {
305 pos = aux.indexOf(n, pos+1);
306 var charAfter = aux.charAt(pos+n.length); // character right after the researched string
307 if (charAfter.match(re)) { // record number inside another one
310 else { // good record number
311 aux = s.substring(0, pos)+ s.substring(pos+n.length+1, s.length);
321 function delBasket() {
322 var nameCookie = "bib_list";
325 rep = confirm(MSG_CONFIRM_DEL_BASKET);
327 delCookie(nameCookie);
328 updateAllLinks(top.opener);
329 document.location = "about:blank";
330 updateBasket(0,top.opener);
337 if (document.myform.records.value) {
339 rep = confirm(MSG_CONFIRM_DEL_RECORDS);
344 updateBasket(arrayRecords.length-1,top.opener);
348 function sendBasket() {
349 var nameCookie = "bib_list";
350 var valCookie = readCookie(nameCookie);
351 var strCookie = nameCookie + "=" + valCookie;
353 var loc = "/cgi-bin/koha/opac-sendbasket.pl?" + strCookie;
355 var optWin="scrollbars=yes,resizable=yes,height=600,width=900,top=50,left=100";
356 var win_form = open(loc,"win_form",optWin);
359 function downloadBasket() {
360 var nameCookie = "bib_list";
361 var valCookie = readCookie(nameCookie);
362 var strCookie = nameCookie + "=" + valCookie;
364 var loc = "/cgi-bin/koha/opac-downloadcart.pl?" + strCookie;
366 open(loc,"win_form",'scrollbars=no,resizable=no,height=300,width=450,top=50,left=100');
369 function showMore() {
372 var nameCookie = "bib_list";
373 var valCookie = readCookie(nameCookie);
375 strCookie = nameCookie + "=" + valCookie;
377 var loc = "/cgi-bin/koha/opac-basket.pl?" + strCookie + "&verbose=1";
378 document.location = loc;
381 function showLess() {
384 var nameCookie = "bib_list";
385 var valCookie = readCookie(nameCookie);
387 strCookie = nameCookie + "=" + valCookie;
389 var loc = "/cgi-bin/koha/opac-basket.pl?" + strCookie + "&verbose=0";
390 document.location = loc;
394 var items = document.getElementById('records').value;
396 parent.opener.document.location = "/cgi-bin/koha/opac-reserve.pl?biblionumbers=" + items;
399 alert(MSG_NO_RECORD_SELECTED);
403 function updateBasket(updated_value,target) {
404 if(updated_value > 0){
405 bcount = "<span>"+updated_value+"</span>";
410 target.$('#basketcount').html(bcount);
411 target.$('.cart-message').html(MSG_IN_YOUR_CART+updated_value);
413 $('#basketcount').html(bcount);
414 $('.cart-message').html(MSG_IN_YOUR_CART+updated_value);
418 function openBiblio(dest,biblionumber) {
419 openerURL=dest+"?biblionumber="+biblionumber;
420 opener.document.location = openerURL;
424 function addSelToShelf() {
425 var items = document.getElementById('records').value;
429 var optWin = "status=yes,scrollbars=yes,resizable=yes,toolbar=no,location=yes,height="+iH+",width="+iW;
430 var loc = "/cgi-bin/koha/opac-addbybiblionumber.pl?biblionumber="+items;
431 var shelf = open(loc, "shelf", optWin);
433 alert(MSG_NO_RECORD_SELECTED);
437 /// vShelfAdd() builds url string for multiple-biblio adds.
439 function vShelfAdd() {
441 if(document.bookbag_form.biblionumber.length > 0) {
442 for (var i=0; i < document.bookbag_form.biblionumber.length; i++) {
443 if (document.bookbag_form.biblionumber[i].checked) {
444 bibs.push("biblionumber=" + document.bookbag_form.biblionumber[i].value);
447 if (bibs.length == 0) { showListsUpdate(MSG_NO_RECORD_SELECTED); }
448 return bibs.join("&");
450 if (document.bookbag_form.biblionumber.checked) {
451 return "biblionumber=" + document.bookbag_form.biblionumber.value;
457 var position = $("#cartmenulink").offset();
458 var scrolld = $(window).scrollTop();
459 var top = position.top + $("#cartmenulink").outerHeight();
464 var buttonWidth = $("#cartmenulink").innerWidth();
465 var buttonOffset = menuWidth - buttonWidth;
466 var left = position.left - 0 // buttonOffset;
468 .css({"position":"absolute", "top":top, "left":left})
473 $("#cartDetails").fadeOut("fast");
476 function updateLink(val,op,target){
479 target.$("a.cart"+val).html(MSG_ITEM_IN_CART).addClass("incart");
480 target.$("a.cartR"+val).show();
482 target.$("a.cart"+val).html(MSG_ITEM_NOT_IN_CART).removeClass("incart").addClass("addtocart cart"+val);
483 target.$("a.cartR"+val).hide();
487 $("a.cart"+val).html(MSG_ITEM_IN_CART).addClass("incart");
488 $("a.cartR"+val).show();
490 $("a.cart"+val).html(MSG_ITEM_NOT_IN_CART).removeClass("incart").addClass("addtocart cart"+val);
491 $("a.cartR"+val).hide();
496 function updateAllLinks(target){
498 target.$("a.incart").html(MSG_ITEM_NOT_IN_CART).removeClass("incart").addClass("addtocart");
499 target.$("a.cartRemove").hide();
501 $("a.incart").html(MSG_ITEM_NOT_IN_CART).removeClass("incart").addClass("addtocart");
502 $("a.cartRemove").hide();
506 $("#cartDetails").ready(function(){
507 $("#cartDetails,#cartmenuitem,#cartmenulink").on("click",function(){ hideCart(); });
508 $("#cartmenuitem").click(function(e){
511 $("li").closest().removeClass("open");
513 updateBasket(basketCount());