1 //////////////////////////////////////////////////////////////////////////////
2 // BASIC FUNCTIONS FOR COOKIE MANGEMENT //
3 //////////////////////////////////////////////////////////////////////////////
5 var CGIBIN = "/cgi-bin/koha/";
8 var nameCookie = "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;
27 parent.document.cookie = name + "=" + val;
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);
61 parent.opener.document.cookie = name + "=null; expires=" + exp.toGMTString();
64 ///////////////////////////////////////////////////////////////////
65 // SPECIFIC FUNCTIONS USING COOKIES //
66 ///////////////////////////////////////////////////////////////////
68 function openBasket() {
70 var nameCookie = "bib_list";
71 var valCookie = readCookie(nameCookie);
73 strCookie = nameCookie + "=" + valCookie;
79 var optWin = "dependant=yes,status=yes,scrollbars=yes,resizable=yes,toolbar=no,adressbar=no,height="+iH+",width="+iW;
80 var loc = CGIBIN + "opac-basket.pl?" + strCookie;
81 var basket = open(loc, "basket", optWin);
82 if (window.focus) {basket.focus()}
85 showCartUpdate(MSG_BASKET_EMPTY);
89 function addRecord(val, selection,NoMsgAlert) {
90 var nameCookie = "bib_list";
91 var valCookie = readCookie(nameCookie);
94 if ( ! valCookie ) { // empty basket
95 valCookie = val + '/';
100 // is this record already in the basket ?
102 var arrayRecords = valCookie.split("/");
103 for (var i = 0; i < valCookie.length - 1; i++) {
104 if (val == arrayRecords[i]) {
114 showCartUpdate(MSG_RECORD_IN_BASKET);
118 valCookie += val + '/';
120 updateBasket(arrayRecords.length);
125 writeCookie(nameCookie, valCookie);
126 if (selection) { // when adding a selection of records
130 showCartUpdate(MSG_RECORD_ADDED);
135 function AllAreChecked(s){
136 if (! s.length) { return false;}
138 for (var i=0; i < l; i++) {
139 if(! s[i].checked) { return false; }
144 function SelectAll(){
145 if(document.bookbag_form.biblionumber.length > 0) {
146 var checky = AllAreChecked(document.bookbag_form.biblionumber);
147 var l = document.bookbag_form.biblionumber.length;
148 for (var i=0; i < l; i++) {
149 document.bookbag_form.biblionumber[i].checked = (checky) ? false : true;
154 function addMultiple(){
156 if(document.bookbag_form.biblionumber.length > 0) {
157 for (var i=0; i < document.bookbag_form.biblionumber.length; i++) {
158 if (document.bookbag_form.biblionumber[i].checked) {
159 c_value = c_value + document.bookbag_form.biblionumber[i].value + "/";
162 addSelRecords(c_value);
164 c_value = c_value + document.bookbag_form.biblionumber.value + "/";
165 addSelRecords(c_value);
169 function addSelRecords(valSel) { // function for adding a selection of biblios to the basket
170 // from the results list
171 var arrayRecords = valSel.split("/");
174 for (i=0;i<arrayRecords.length;i++) {
175 if (arrayRecords[i]) {
176 nbAdd += addRecord(arrayRecords[i], 1);
185 msg = nbAdd+" "+MSG_NRECORDS_ADDED+", "+(i-nbAdd)+" "+MSG_NRECORDS_IN_BASKET;
188 msg = nbAdd+" "+MSG_NRECORDS_ADDED;
193 msg = MSG_NO_RECORD_SELECTED;
196 msg = MSG_NO_RECORD_ADDED+" ("+MSG_NRECORDS_IN_BASKET+") !";
202 function showCartUpdate(msg){
203 cartUpdate.setBody(msg);
204 cartUpdate.render("cc");
206 setTimeout("cartUpdate.hide()",5000);
209 function selRecord(num, status) {
210 var str = document.myform.records.value
215 str = delRecord(num, str);
218 document.myform.records.value = str;
221 function delSelRecords() {
224 var nameCookie = "bib_list";
225 var valCookie = readCookie(nameCookie, 1);
228 var str = document.myform.records.value;
231 var str2 = valCookie;
233 s = str.indexOf("/");
235 num = str.substring(0, s)
236 str = delRecord(num,str);
237 str2 = delRecord(num,str2);
243 if (str2.length == 0) { // equivalent to emptying the basket
245 rep = confirm(MSG_CONFIRM_DEL_BASKET);
247 delCookie(nameCookie);
248 document.location = "about:blank";
249 updateBasket(0,top.opener);
255 writeCookie(nameCookie, str2, 1);
262 var nameCookie = "bib_list";
263 var valCookie = readCookie(nameCookie, 1);
264 strCookie = nameCookie + "=" + valCookie;
265 var arrayRecords = valCookie.split("/");
266 updateBasket(arrayRecords.length-1,top.opener);
267 document.location = CGIBIN + "opac-basket.pl?" + strCookie;
270 alert(MSG_NO_RECORD_SELECTED);
274 function delRecord (n, s) {
281 pos = aux.indexOf(n, pos+1);
282 var charAfter = aux.charAt(pos+n.length); // character right after the researched string
283 if (charAfter.match(re)) { // record number inside another one
286 else { // good record number
287 aux = s.substring(0, pos)+ s.substring(pos+n.length+1, s.length);
297 function delBasket() {
298 var nameCookie = "bib_list";
301 rep = confirm(MSG_CONFIRM_DEL_BASKET);
303 delCookie(nameCookie);
304 document.location = "about:blank";
305 updateBasket(0,top.opener);
312 if (document.myform.records.value) {
314 rep = confirm(MSG_CONFIRM_DEL_RECORDS);
319 updateBasket(arrayRecords.length-1,top.opener);
323 function sendBasket() {
324 var nameCookie = "bib_list";
325 var valCookie = readCookie(nameCookie);
326 var strCookie = nameCookie + "=" + valCookie;
328 var loc = CGIBIN + "opac-sendbasket.pl?" + strCookie;
330 var optWin="dependant=yes,scrollbars=no,resizable=no,height=300,width=450,top=50,left=100";
331 var win_form = open(loc,"win_form",optWin);
334 function printBasket() {
335 var loc = document.location + "&print=1";
336 document.location = loc;
339 function showMore() {
342 var nameCookie = "bib_list";
343 var valCookie = readCookie(nameCookie);
345 strCookie = nameCookie + "=" + valCookie;
347 var loc = CGIBIN + "opac-basket.pl?" + strCookie + "&verbose=1";
348 document.location = loc;
351 function showLess() {
354 var nameCookie = "bib_list";
355 var valCookie = readCookie(nameCookie);
357 strCookie = nameCookie + "=" + valCookie;
359 var loc = CGIBIN + "opac-basket.pl?" + strCookie + "&verbose=0";
360 document.location = loc;
363 function updateBasket(updated_value,target) {
365 target.$('#basket').html("<span>"+updated_value+"</span>");
366 target.$('#cartDetails').html(_("Your cart contains ")+updated_value+_(" items"));
368 $('#basket').html("<span>"+updated_value+"</span>");
369 $('#cartDetails').html(_("Your cart contains ")+updated_value+_(" items"));
371 var basketcount = updated_value;
374 function openBiblio(dest,biblionumber) {
375 openerURL=dest+"?biblionumber="+biblionumber;
376 opener.document.location = openerURL;
380 function addSelToShelf() {
381 var items = document.getElementById('records').value;
382 document.location = "/cgi-bin/koha/opac-addbybiblionumber.pl?biblionumber="+items;
385 /// vShelfAdd() builds url string for multiple-biblio adds.
387 function vShelfAdd() {
389 if(document.bookbag_form.biblionumber.length > 0) {
390 for (var i=0; i < document.bookbag_form.biblionumber.length; i++) {
391 if (document.bookbag_form.biblionumber[i].checked) {
392 bibs.push("biblionumber=" + document.bookbag_form.biblionumber[i].value);
395 return bibs.join("&");
397 if (document.bookbag_form.biblionumber.checked) {
398 return "biblionumber=" + document.bookbag_form.biblionumber.value;
403 YAHOO.util.Event.onContentReady("cartDetails", function () {
404 $("#cartDetails").css("display","block").css("visibility","hidden").after("<div id=\"cc\" style=\"visibility: hidden\"></div>");
405 $("#cmspan").html("<a href=\"#\" id=\"cartmenulink\" class=\"\"><i></i><span><i></i><span></span><img src=\"/opac-tmpl/prog/images/cart.gif\" width=\"14\" height=\"14\" alt=\"\" border=\"0\" /> Cart<span id=\"basket\"></span></span></a>");
406 if(basketcount){ updateBasket(basketcount) }
409 function cartMenuInit() {
410 $('#cartmenulink').click(function(){
411 openBasket(); return false;
413 // Build cartOverlay based on markup
414 cartOverlay = new YAHOO.widget.Overlay("cartDetails", { context:["cartmenulink","tr","br"], visible:false,width:"200px",effect:{effect:YAHOO.widget.ContainerEffect.FADE,duration:0.25} } );
415 cartOverlay.render();
416 YAHOO.util.Event.addListener("cartmenulink", "mouseover", cartOverlay.show, cartOverlay, true);
417 YAHOO.util.Event.addListener("cartmenulink", "mouseout", cartOverlay.hide, cartOverlay, true);
418 YAHOO.util.Event.addListener("cartmenulink", "click", cartOverlay.hide, cartOverlay, true);
420 cartUpdate = new YAHOO.widget.Panel("cartUpdate", { context:["cartmenulink","tr","br"], visible:false,width:"200px",effect:{effect:YAHOO.widget.ContainerEffect.FADE,duration:0.25} } );
422 YAHOO.util.Event.addListener(window, "load", cartMenuInit);