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);
62 parent.opener.document.cookie = name + "=null; expires=" + exp.toGMTString();
64 document.cookie = name + "=null; expires=" + exp.toGMTString();
68 ///////////////////////////////////////////////////////////////////
69 // SPECIFIC FUNCTIONS USING COOKIES //
70 ///////////////////////////////////////////////////////////////////
72 function openBasket() {
74 var nameCookie = "bib_list";
75 var valCookie = readCookie(nameCookie);
77 strCookie = nameCookie + "=" + valCookie;
83 var optWin = "dependant=yes,status=yes,scrollbars=yes,resizable=yes,toolbar=no,location=yes,height="+iH+",width="+iW;
84 var loc = CGIBIN + "opac-basket.pl?" + strCookie;
85 var basket = open(loc, "basket", optWin);
86 if (window.focus) {basket.focus()}
89 showCartUpdate(MSG_BASKET_EMPTY);
93 function addRecord(val, selection,NoMsgAlert) {
94 var nameCookie = "bib_list";
95 var valCookie = readCookie(nameCookie);
98 if ( ! valCookie ) { // empty basket
99 valCookie = val + '/';
104 // is this record already in the basket ?
106 var arrayRecords = valCookie.split("/");
107 for (var i = 0; i < valCookie.length - 1; i++) {
108 if (val == arrayRecords[i]) {
118 showCartUpdate(MSG_RECORD_IN_BASKET);
122 valCookie += val + '/';
124 updateBasket(arrayRecords.length);
129 writeCookie(nameCookie, valCookie);
130 if (selection) { // when adding a selection of records
134 showCartUpdate(MSG_RECORD_ADDED);
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(){
160 if(document.bookbag_form.biblionumber.length > 0) {
161 for (var i=0; i < document.bookbag_form.biblionumber.length; i++) {
162 if (document.bookbag_form.biblionumber[i].checked) {
163 c_value = c_value + document.bookbag_form.biblionumber[i].value + "/";
166 addSelRecords(c_value);
168 c_value = c_value + document.bookbag_form.biblionumber.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 = nbAdd+" "+MSG_NRECORDS_ADDED+", "+(i-nbAdd)+" "+MSG_NRECORDS_IN_BASKET;
192 msg = nbAdd+" "+MSG_NRECORDS_ADDED;
197 msg = MSG_NO_RECORD_SELECTED;
200 msg = MSG_NO_RECORD_ADDED+" ("+MSG_NRECORDS_IN_BASKET+") !";
206 function showCartUpdate(msg){
207 // set body of popup window
208 $("#cartDetails").html(msg);
210 setTimeout("hideCart()",2000);
213 function selRecord(num, status) {
214 var str = document.myform.records.value
219 str = delRecord(num, str);
222 document.myform.records.value = str;
225 function delSelRecords() {
228 var nameCookie = "bib_list";
229 var valCookie = readCookie(nameCookie, 1);
232 var str = document.myform.records.value;
235 var str2 = valCookie;
237 s = str.indexOf("/");
239 num = str.substring(0, s)
240 str = delRecord(num,str);
241 str2 = delRecord(num,str2);
247 if (str2.length == 0) { // equivalent to emptying the basket
249 rep = confirm(MSG_CONFIRM_DEL_BASKET);
251 delCookie(nameCookie);
252 document.location = "about:blank";
253 updateBasket(0,top.opener);
259 writeCookie(nameCookie, str2, 1);
266 var nameCookie = "bib_list";
267 var valCookie = readCookie(nameCookie, 1);
268 strCookie = nameCookie + "=" + valCookie;
269 var arrayRecords = valCookie.split("/");
270 updateBasket(arrayRecords.length-1,top.opener);
271 document.location = CGIBIN + "opac-basket.pl?" + strCookie;
274 alert(MSG_NO_RECORD_SELECTED);
278 function delRecord (n, s) {
285 pos = aux.indexOf(n, pos+1);
286 var charAfter = aux.charAt(pos+n.length); // character right after the researched string
287 if (charAfter.match(re)) { // record number inside another one
290 else { // good record number
291 aux = s.substring(0, pos)+ s.substring(pos+n.length+1, s.length);
301 function delBasket() {
302 var nameCookie = "bib_list";
305 rep = confirm(MSG_CONFIRM_DEL_BASKET);
307 delCookie(nameCookie);
308 document.location = "about:blank";
309 updateBasket(0,top.opener);
316 if (document.myform.records.value) {
318 rep = confirm(MSG_CONFIRM_DEL_RECORDS);
323 updateBasket(arrayRecords.length-1,top.opener);
327 function sendBasket() {
328 var nameCookie = "bib_list";
329 var valCookie = readCookie(nameCookie);
330 var strCookie = nameCookie + "=" + valCookie;
332 var loc = CGIBIN + "opac-sendbasket.pl?" + strCookie;
334 var optWin="dependant=yes,scrollbars=no,resizable=no,height=300,width=450,top=50,left=100";
335 var win_form = open(loc,"win_form",optWin);
338 function printBasket() {
339 var loc = document.location + "&print=1";
340 document.location = loc;
343 function showMore() {
346 var nameCookie = "bib_list";
347 var valCookie = readCookie(nameCookie);
349 strCookie = nameCookie + "=" + valCookie;
351 var loc = CGIBIN + "opac-basket.pl?" + strCookie + "&verbose=1";
352 document.location = loc;
355 function showLess() {
358 var nameCookie = "bib_list";
359 var valCookie = readCookie(nameCookie);
361 strCookie = nameCookie + "=" + valCookie;
363 var loc = CGIBIN + "opac-basket.pl?" + strCookie + "&verbose=0";
364 document.location = loc;
367 function updateBasket(updated_value,target) {
369 target.$('#basketcount').html("<span>"+updated_value+"</span>");
370 target.$('#cartDetails').html(_("Your cart contains ")+updated_value+_(" items"));
372 $('#basketcount').html("<span>"+updated_value+"</span>");
373 $('#cartDetails').html(_("Your cart contains ")+updated_value+_(" items"));
375 var basketcount = updated_value;
378 function openBiblio(dest,biblionumber) {
379 openerURL=dest+"?biblionumber="+biblionumber;
380 opener.document.location = openerURL;
384 function addSelToShelf() {
385 var items = document.getElementById('records').value;
387 document.location = "/cgi-bin/koha/opac-addbybiblionumber.pl?biblionumber="+items;
389 alert(MSG_NO_RECORD_SELECTED);
393 /// vShelfAdd() builds url string for multiple-biblio adds.
395 function vShelfAdd() {
397 if(document.bookbag_form.biblionumber.length > 0) {
398 for (var i=0; i < document.bookbag_form.biblionumber.length; i++) {
399 if (document.bookbag_form.biblionumber[i].checked) {
400 bibs.push("biblionumber=" + document.bookbag_form.biblionumber[i].value);
403 return bibs.join("&");
405 if (document.bookbag_form.biblionumber.checked) {
406 return "biblionumber=" + document.bookbag_form.biblionumber.value;
412 var position = $("#cartmenulink").offset({border: true,margin:false});
413 var top = position.top + 16; // $("#cartmenulink").outerHeight();
414 var left = position.left - 105;
415 $("#cartDetails").css("position","absolute").css("top",top);
416 $("#cartDetails").css("position","absolute").css("left",left);
417 $("#cartDetails").fadeIn("fast",function(){
418 $("#cartDetails").dropShadow({left: 3, top: 3, blur: 0, color: "#000", opacity: 0.1});
423 $(".dropShadow").hide();
424 $("#cartDetails").fadeOut("fast");
427 $("#cartDetails").ready(function(){
428 $("#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=\"basketcount\"></span></span></a>");
429 $("#cartDetails,#cartmenulink").click(function(){ hideCart(); });
430 $("#cartmenulink").click(function(){ openBasket(); return false; });
431 $("#cartmenulink").hoverIntent(function(){
436 if(basketcount){ updateBasket(basketcount) }