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 && 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 + "/";
167 var bibnums = getContextBiblioNumbers();
168 if ( bibnums.length > 0 ) {
169 for ( var i = 0 ; i < bibnums.length ; i++ ) {
170 c_value = c_value + bibnums[i] + "/";
173 if(document.bookbag_form.biblionumber.length > 0) {
174 for (var i=0; i < document.bookbag_form.biblionumber.length; i++) {
175 if (document.bookbag_form.biblionumber[i].checked) {
176 c_value = c_value + document.bookbag_form.biblionumber[i].value + "/";
180 c_value = c_value + document.bookbag_form.biblionumber.value + "/";
184 addSelRecords(c_value);
187 function addSelRecords(valSel) { // function for adding a selection of biblios to the basket
188 // from the results list
189 var arrayRecords = valSel.split("/");
192 for (i=0;i<arrayRecords.length;i++) {
193 if (arrayRecords[i]) {
194 nbAdd += addRecord(arrayRecords[i], 1);
203 msg = MSG_NRECORDS_ADDED.format(nbAdd);
205 msg += MSG_NRECORDS_IN_BASKET.format((i-nbAdd));
208 msg = MSG_NRECORDS_ADDED.format(nbAdd);
213 msg = MSG_NO_RECORD_SELECTED;
216 msg = MSG_NO_RECORD_ADDED;
222 function showCartUpdate(msg){
223 // set body of popup window
224 $("#cartDetails").html(msg);
226 setTimeout(hideCart,2000);
229 function showListsUpdate(msg){
230 // set body of popup window
234 function selRecord(num, status) {
235 var str = document.myform.records.value;
240 str = delRecord(num, str);
243 document.myform.records.value = str;
246 function delSingleRecord(biblionumber){
247 var valCookie = readCookie(nameCookie);
248 var arrayRecords = valCookie.split("/");
249 var pos = jQuery.inArray(biblionumber,arrayRecords);
250 arrayRecords.splice(pos,1);
251 valCookie = arrayRecords.join("/");
252 writeCookie( nameCookie, valCookie );
253 updateBasket( arrayRecords.length-1 );
254 updateLink(biblionumber,"del");
255 showCartUpdate(MSG_RECORD_REMOVED);
258 function delSelRecords() {
261 var valCookie = readCookie(nameCookie, 1);
264 var str = document.myform.records.value;
267 var str2 = valCookie;
269 s = str.indexOf("/");
271 num = str.substring(0, s);
272 str = delRecord(num,str);
273 str2 = delRecord(num,str2);
274 updateLink(num,"del",top.opener);
280 if (str2.length === 0) { // equivalent to emptying the basket
282 rep = confirm(MSG_CONFIRM_DEL_BASKET);
284 delCookie(nameCookie);
285 document.location = "about:blank";
286 updateBasket(0,top.opener);
292 writeCookie(nameCookie, str2, 1);
299 valCookie = readCookie(nameCookie, 1);
300 strCookie = nameParam + "=" + valCookie;
301 var arrayRecords = valCookie.split("/");
302 updateBasket(arrayRecords.length-1,top.opener);
303 document.location = CGIBIN + "basket/basket.pl?" + strCookie;
306 alert(MSG_NO_RECORD_SELECTED);
310 function delRecord (n, s) {
317 pos = aux.indexOf(n, pos+1);
318 var charAfter = aux.charAt(pos+n.length); // character right after the researched string
319 if (charAfter.match(re)) { // record number inside another one
322 else { // good record number
323 aux = s.substring(0, pos)+ s.substring(pos+n.length+1, s.length);
333 function delBasket(context,rep) {
334 if (rep === undefined){
335 rep = confirm(MSG_CONFIRM_DEL_BASKET);
338 if(context == "popup"){
339 delCookie(nameCookie);
340 updateAllLinks(top.opener);
341 document.location = "about:blank";
342 updateBasket(0,top.opener);
345 delCookie(nameCookie);
346 updateBasket(0,top.opener);
353 if (document.myform.records.value) {
355 rep = confirm(MSG_CONFIRM_DEL_RECORDS);
360 updateBasket(arrayRecords.length-1,top.opener);
364 function sendBasket() {
365 var valCookie = readCookie(nameCookie);
366 var strCookie = nameParam + "=" + valCookie;
368 var loc = CGIBIN + "basket/sendbasket.pl?" + strCookie;
370 var optWin="scrollbars=no,resizable=no,height=400,width=650,top=50,left=100";
371 var win_form = open(loc,"win_form",optWin);
374 function downloadBasket() {
375 var valCookie = readCookie(nameCookie);
376 var strCookie = nameParam + "=" + valCookie;
378 var loc = CGIBIN + "basket/downloadcart.pl?" + strCookie;
380 open(loc,"win_form",'scrollbars=no,resizable=no,height=300,width=450,top=50,left=100');
383 function printBasket() {
387 function showMore() {
390 var valCookie = readCookie(nameCookie);
392 strCookie = nameParam + "=" + valCookie;
394 var loc = CGIBIN + "basket/basket.pl?" + strCookie + "&verbose=1";
395 document.location = loc;
398 function showLess() {
401 var valCookie = readCookie(nameCookie);
403 strCookie = nameParam + "=" + valCookie;
405 var loc = CGIBIN + "basket/basket.pl?" + strCookie + "&verbose=0";
406 document.location = loc;
409 function updateBasket(updated_value,target) {
411 target.$('#basketcount').html(" <span>("+updated_value+")</span>");
412 target.$('#cartDetails').html(MSG_IN_YOUR_CART.format(updated_value));
414 $('#basketcount').html(" <span>("+updated_value+")</span>");
415 $('#cartDetails').html(MSG_IN_YOUR_CART.format(updated_value));
417 var basketcount = updated_value;
420 function openBiblio(openerURL) {
421 opener.document.location = openerURL;
425 function addSelToShelf() {
426 var items = document.getElementById('records').value;
428 document.location = "/cgi-bin/koha/virtualshelves/addbybiblionumber.pl?biblionumber="+items;
430 alert(MSG_NO_RECORD_SELECTED);
434 /// vShelfAdd() builds url string for multiple-biblio adds.
436 function vShelfAdd(biblist) {
437 var bibs = new Array;
438 if( biblist && biblist.length > 0 ) {
439 for (var i=0; i < biblist.length; i++) {
440 if (biblist[i].checked) {
441 bibs.push("biblionumber=" + biblist[i].value);
444 if (bibs.length === 0) { showListsUpdate(MSG_NO_RECORD_SELECTED); }
445 return bibs.join("&");
447 var bibnums = getContextBiblioNumbers();
448 if ( bibnums.length > 0 ) {
449 for ( var i = 0 ; i < bibnums.length ; i++ ) {
450 bibs.push("biblionumber=" + bibnums[i]);
452 return bibs.join("&");
458 var position = $("#cartmenulink").offset();
459 var toolbarh = $(".floating").outerHeight();
460 var scrolld = $(window).scrollTop();
461 var top = position.top + $("#cartmenulink").outerHeight();
463 top = scrolld + toolbarh + 15;
465 var left = position.left;
466 $("#cartDetails").css("position","absolute").css("top",top);
467 $("#cartDetails").css("position","absolute").css("left",left);
468 $("#cartDetails").fadeIn("fast");
472 $("#cartDetails").fadeOut("fast");
475 function updateLink(val, op, target){
476 var cart = target ? target.$("#cart" + val) : $("#cart" + val);
477 var cartR = target ? target.$("#cartR" + val) : $("#cartR" + val);
480 cart.html(MSG_ITEM_IN_CART).addClass("incart");
483 cart.html(MSG_ITEM_NOT_IN_CART).removeClass("incart").addClass("addtocart");
488 function updateAllLinks(target){
490 target.$("a.incart").html(MSG_ITEM_NOT_IN_CART).removeClass("incart").addClass("addtocart");
491 target.$(".cartRemove").hide();
493 $("a.incart").html(MSG_ITEM_NOT_IN_CART).removeClass("incart").addClass("addtocart");
494 $(".cartRemove").hide();
498 $(document).ready(function(){
499 $("#cartmenulink").click(function(){ openBasket(); return false; });
500 if(basketcount){ updateBasket(basketcount); }