1 //////////////////////////////////////////////////////////////////////////////
2 // BASIC FUNCTIONS FOR COOKIE MANAGEMENT //
3 //////////////////////////////////////////////////////////////////////////////
5 var CGIBIN = "/cgi-bin/koha/";
7 var nameCookie = "intranet_bib_list";
8 var nameParam = "bib_list";
9 var valCookie = readCookie(nameCookie);
12 var arrayRecords = valCookie.split("/");
13 if(arrayRecords.length > 0){
14 var basketcount = arrayRecords.length-1;
22 function writeCookie(name, val, wd) {
24 parent.opener.document.cookie = name + "=" + val + "; path=/";
27 parent.document.cookie = name + "=" + val + "; path=/";
31 function readCookieValue (str, val_beg) {
32 var val_end = str.indexOf(";", val_end);
35 return str.substring(val_beg, val_end);
38 function readCookie(name, wd) {
39 var str_name = name + "=";
40 var str_len = str_name.length;
43 str_cookie = parent.opener.document.cookie;
46 str_cookie = parent.document.cookie;
48 // fixed - getting the part of the basket that is bib_list
49 var cookie_parts = str_cookie.split(";");
50 for(var i=0;i < cookie_parts.length;i++) {
51 var c = cookie_parts[i];
52 while (c.charAt(0)==' ') c = c.substring(1,c.length);
53 if(c.indexOf(str_name) === 0) return c.substring(str_name.length,c.length);
58 function delCookie(name) {
60 exp.setTime(exp.getTime()-1);
62 parent.opener.document.cookie = name + "=null; path=/; expires=" + exp.toGMTString();
64 document.cookie = name + "=null; path=/; expires=" + exp.toGMTString();
68 ///////////////////////////////////////////////////////////////////
69 // SPECIFIC FUNCTIONS USING COOKIES //
70 ///////////////////////////////////////////////////////////////////
72 function openBasket() {
74 var valCookie = readCookie(nameCookie);
76 strCookie = nameParam + "=" + valCookie;
82 var optWin = "status=yes,scrollbars=yes,resizable=yes,toolbar=no,location=yes,height="+iH+",width="+iW;
83 var loc = CGIBIN + "basket/basket.pl?" + strCookie;
84 var basket = open(loc, "basket", optWin);
85 if (window.focus) { basket.focus(); }
88 showCartUpdate(MSG_BASKET_EMPTY);
92 function addRecord(val, selection,NoMsgAlert) {
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");
139 function AllAreChecked(s){
140 if (! s.length) { return false;}
142 for (var i=0; i < l; i++) {
143 if(! s[i].checked) { return false; }
148 function SelectAll(){
149 if(document.bookbag_form.biblionumber.length > 0) {
150 var checky = AllAreChecked(document.bookbag_form.biblionumber);
151 var l = document.bookbag_form.biblionumber.length;
152 for (var i=0; i < l; i++) {
153 document.bookbag_form.biblionumber[i].checked = (checky) ? false : true;
158 function addMultiple(biblist){
160 if(biblist.length > 0) {
161 for (var i=0; i < biblist.length; i++) {
162 if (biblist[i].checked) {
163 c_value = c_value + biblist[i].value + "/";
166 addSelRecords(c_value);
168 c_value = c_value + biblist.value + "/";
169 addSelRecords(c_value);
173 function addSelRecords(valSel) { // function for adding a selection of biblios to the basket
174 // from the results list
175 var arrayRecords = valSel.split("/");
178 for (i=0;i<arrayRecords.length;i++) {
179 if (arrayRecords[i]) {
180 nbAdd += addRecord(arrayRecords[i], 1);
189 msg = MSG_NRECORDS_ADDED.format(nbAdd);
191 msg += MSG_NRECORDS_IN_BASKET.format((i-nbAdd));
194 msg = MSG_NRECORDS_ADDED.format(nbAdd);
199 msg = MSG_NO_RECORD_SELECTED;
202 msg = MSG_NO_RECORD_ADDED;
208 function showCartUpdate(msg){
209 // set body of popup window
210 $("#cartDetails").html(msg);
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 valCookie = readCookie(nameCookie);
234 var arrayRecords = valCookie.split("/");
235 var pos = jQuery.inArray(biblionumber,arrayRecords);
236 arrayRecords.splice(pos,1);
237 valCookie = arrayRecords.join("/");
238 writeCookie( nameCookie, valCookie );
239 updateBasket( arrayRecords.length-1 );
240 updateLink(biblionumber,"del");
241 showCartUpdate(MSG_RECORD_REMOVED);
244 function delSelRecords() {
247 var valCookie = readCookie(nameCookie, 1);
250 var str = document.myform.records.value;
253 var str2 = valCookie;
255 s = str.indexOf("/");
257 num = str.substring(0, s);
258 str = delRecord(num,str);
259 str2 = delRecord(num,str2);
260 updateLink(num,"del",top.opener);
266 if (str2.length === 0) { // equivalent to emptying the basket
268 rep = confirm(MSG_CONFIRM_DEL_BASKET);
270 delCookie(nameCookie);
271 document.location = "about:blank";
272 updateBasket(0,top.opener);
278 writeCookie(nameCookie, str2, 1);
285 valCookie = readCookie(nameCookie, 1);
286 strCookie = nameParam + "=" + valCookie;
287 var arrayRecords = valCookie.split("/");
288 updateBasket(arrayRecords.length-1,top.opener);
289 document.location = CGIBIN + "basket/basket.pl?" + strCookie;
292 alert(MSG_NO_RECORD_SELECTED);
296 function delRecord (n, s) {
303 pos = aux.indexOf(n, pos+1);
304 var charAfter = aux.charAt(pos+n.length); // character right after the researched string
305 if (charAfter.match(re)) { // record number inside another one
308 else { // good record number
309 aux = s.substring(0, pos)+ s.substring(pos+n.length+1, s.length);
319 function delBasket(context,rep) {
320 if (rep === undefined){
321 rep = confirm(MSG_CONFIRM_DEL_BASKET);
324 if(context == "popup"){
325 delCookie(nameCookie);
326 updateAllLinks(top.opener);
327 document.location = "about:blank";
328 updateBasket(0,top.opener);
331 delCookie(nameCookie);
332 updateBasket(0,top.opener);
339 if (document.myform.records.value) {
341 rep = confirm(MSG_CONFIRM_DEL_RECORDS);
346 updateBasket(arrayRecords.length-1,top.opener);
350 function sendBasket() {
351 var valCookie = readCookie(nameCookie);
352 var strCookie = nameParam + "=" + valCookie;
354 var loc = CGIBIN + "basket/sendbasket.pl?" + strCookie;
356 var optWin="scrollbars=no,resizable=no,height=400,width=650,top=50,left=100";
357 var win_form = open(loc,"win_form",optWin);
360 function downloadBasket() {
361 var valCookie = readCookie(nameCookie);
362 var strCookie = nameParam + "=" + valCookie;
364 var loc = CGIBIN + "basket/downloadcart.pl?" + strCookie;
366 open(loc,"win_form",'scrollbars=no,resizable=no,height=300,width=450,top=50,left=100');
369 function printBasket() {
370 var loc = document.location + "&print=1";
371 document.location = loc;
374 function showMore() {
377 var valCookie = readCookie(nameCookie);
379 strCookie = nameParam + "=" + valCookie;
381 var loc = CGIBIN + "basket/basket.pl?" + strCookie + "&verbose=1";
382 document.location = loc;
385 function showLess() {
388 var valCookie = readCookie(nameCookie);
390 strCookie = nameParam + "=" + valCookie;
392 var loc = CGIBIN + "basket/basket.pl?" + strCookie + "&verbose=0";
393 document.location = loc;
396 function updateBasket(updated_value,target) {
398 target.$('#basketcount').html(" <span>("+updated_value+")</span>");
399 target.$('#cartDetails').html(MSG_IN_YOUR_CART.format(updated_value));
401 $('#basketcount').html(" <span>("+updated_value+")</span>");
402 $('#cartDetails').html(MSG_IN_YOUR_CART.format(updated_value));
404 var basketcount = updated_value;
407 function openBiblio(openerURL) {
408 opener.document.location = openerURL;
412 function addSelToShelf() {
413 var items = document.getElementById('records').value;
415 document.location = "/cgi-bin/koha/virtualshelves/addbybiblionumber.pl?biblionumber="+items;
417 alert(MSG_NO_RECORD_SELECTED);
421 /// vShelfAdd() builds url string for multiple-biblio adds.
423 function vShelfAdd(biblist) {
425 if(biblist.length > 0) {
426 for (var i=0; i < biblist.length; i++) {
427 if (biblist[i].checked) {
428 bibs.push("biblionumber=" + biblist[i].value);
431 if (bibs.length === 0) { showListsUpdate(MSG_NO_RECORD_SELECTED); }
432 return bibs.join("&");
434 if (biblist.checked) {
435 return "biblionumber=" + biblist.value;
441 var position = $("#cartmenulink").offset();
442 var scrolld = $(window).scrollTop();
443 var top = position.top + $("#cartmenulink").outerHeight();
447 var left = position.left;
448 $("#cartDetails").css("position","absolute").css("top",top);
449 $("#cartDetails").css("position","absolute").css("left",left);
450 $("#cartDetails").fadeIn("fast");
454 $("#cartDetails").fadeOut("fast");
457 function updateLink(val, op, target){
458 var cart = target ? target.$("#cart" + val) : $("#cart" + val);
459 var cartR = target ? target.$("#cartR" + val) : $("#cartR" + val);
462 cart.html(MSG_ITEM_IN_CART).addClass("incart");
465 cart.html(MSG_ITEM_NOT_IN_CART).removeClass("incart").addClass("addtocart");
470 function updateAllLinks(target){
472 target.$("a.incart").html(MSG_ITEM_NOT_IN_CART).removeClass("incart").addClass("addtocart");
473 target.$(".cartRemove").hide();
475 $("a.incart").html(MSG_ITEM_NOT_IN_CART).removeClass("incart").addClass("addtocart");
476 $(".cartRemove").hide();
480 $(document).ready(function(){
481 $("#cartmenulink").click(function(){ openBasket(); return false; });
482 if(basketcount){ updateBasket(basketcount); }