//used to stored the current items in basket, including collection name, document id and dodument title //in the format of collection:id:[title], it is updated when the page is loaded (reloaded) or the user adds // new items in the basket (see ygDDplayer.js). It is used to show the contents of the basket. // note we only support favourites now, not the old drag and drop berry baskets // berry is still used here for legacy reasons var berryList = new Array(); var show = false; var countFavourites = function(callback) { var request_type = "GET"; var url = gs.xsltParams.library_name + "?a=pr&rt=r&ro=1&s=GetNumFavourites&o=XML&hhf="+makeURLComponentSafe("[{\"name\":\"Cache-Control\", \"value\":\"no-cache\"}]")+"&c="; var responseSuccess = function(o) { var response = o.responseXML; var size = response.getElementsByTagName('size').item(0).getAttribute('value'); var items = response.getElementsByTagName('documentNode'); callback(items.length); } YAHOO.util.Connect.asyncRequest(request_type , url , {success: responseSuccess }); } // display selected favourites (filled-in star icon) on page var favouritesCheckout = function(){ if ( document.getElementById('berrybasket') == null ) return; var request_type = "GET"; var url = gs.xsltParams.library_name + "?a=pr&rt=r&ro=1&s=GetNumFavourites&o=XML&hhf="+makeURLComponentSafe("[{\"name\":\"Cache-Control\", \"value\":\"no-cache\"}]")+"&c="; var responseSuccess = function(o){ var response = o.responseXML; var size = response.getElementsByTagName('size').item(0).getAttribute('value'); var items = response.getElementsByTagName('documentNode'); berryList = new Array(); for (var i=0;i < items.length ; i++ ){ var itemID = items[i].getAttribute('collection')+":"+items[i].getAttribute('name'); var item = YAHOO.util.Dom.get(itemID); if (item != null){ item.src = gs.variables.selected_favourite_icon_url; item.setAttribute("data-is-favourite","true"); } berryList[berryList.length] = items[i]; } // set favourite images visible // they are set to be invisible to prevent flickering when first loaded (see berry.css) var berries = document.getElementsByTagName('img'); for (var j=0; j < berries.length; j++){ var berry = berries[j]; var parent = berry.parentNode; if (parent !=null && parent.id == "documentberries"){ var root = YAHOO.util.Dom.get(berry.id+":root"); var section = YAHOO.util.Dom.get(berry.id+":section"); if(root!=null && root.id.indexOf(berry.id) !=-1){ root.style.visibility ="visible" ; } if(section!=null && section.id.indexOf(berry.id) !=-1){ section.style.visibility ="visible" ; } } if (berry.className && berry.className == 'pick'){ berry.style.visibility = "visible"; // new ygDDPlayer(berry.id,'basket',berryList); // **** can go } } updateFavouritesCount(); } var responseFailure = function(o){ console.error("Berry Basket GetItems AJAX call failed:" + url); } var callback = { success: responseSuccess, failure: responseFailure } //var date = new Date(); //url += "&rand=" + date.getTime(); YAHOO.util.Connect.asyncRequest(request_type , url , callback); } function updateFavouritesCount() { var favouritesCountElement = YAHOO.util.Dom.get('favouritesCountDisplay'); if ( favouritesCountElement == null ) return; if ( berryList.length == 0 ) { favouritesCountElement.innerHTML = "(0)"; } else { favouritesCountElement.innerHTML = "(" + berryList.length + ")"; } } function addFavourite(el){ var addurl = gs.xsltParams.library_name + "?a=pr&rt=r&ro=1&s=AddFavourite&c=&s1.id=2&o=XML&hhf="+makeURLComponentSafe("[{\"name\":\"Cache-Control\", \"value\":\"no-cache\"}]")+"&s1.item=" + el.id; var request_type = "GET"; var addSuccess = function(o){ var result = o.responseXML; var items = result.getElementsByTagName('documentNode'); if (items.length > 0){ // assumes that there is only 1 item to add var item = items[0]; berryList[berryList.length]= item; updateFavouritesCount(); } } var addFailure = function(o){ } var addcallback = { success:addSuccess, failure:addFailure } YAHOO.util.Connect.asyncRequest(request_type , addurl , addcallback); } function deleteFavourite(el){ var delurl = gs.xsltParams.library_name + "?a=pr&rt=r&ro=1&s=DeleteFavourites&c=&o=XML&hhf="+makeURLComponentSafe("[{\"name\":\"Cache-Control\", \"value\":\"no-cache\"}]")+"&s1.items=" + el.id; var request_type = "GET"; var delSuccess = function(o){ for (var i in berryList) { var berry = berryList[i]; console.log(berry); var id = berry.getAttribute('collection')+":"+berry.getAttribute('name'); if (id == el.id){ berryList.splice(i,1); break; } } updateFavouritesCount(); } var delFailure = function(o){ } var delcallback = { success:delSuccess, failure:delFailure } YAHOO.util.Connect.asyncRequest(request_type , delurl , delcallback); } function toggleFavourite(el) { var is_favourite = el.getAttribute("data-is-favourite"); if (is_favourite == "true") { deleteFavourite(el); el.src = gs.variables.unselected_favourite_icon_url; el.setAttribute("data-is-favourite","false") } else { addFavourite(el); el.src = gs.variables.selected_favourite_icon_url; el.setAttribute("data-is-favourite","true") } } YAHOO.util.Event.addListener(window, 'load', favouritesCheckout); //YAHOO.util.Event.addListener(window, 'click', basketUpdate);