// Does this have to be global?
var BOOK_DATA = new Object();
var photo_browser;
var spread_hairlines;
var book_hairlines;
var caption  = new Object();
caption.data = new Object();
var env = 'dev';
function init() {
if (BOOK_DATA.photos == undefined) {
var_closure = function(req) { BOOK_DATA.photos = eval('(' +req.responseText+')'); return BOOK_DATA.photos;};
loadJsonResponse("/data/photos.php?medium=books", 
var_closure,
addItemsToBrowser);
return;}
BOOK_DATA.products              = $H(getData("ds_book"));
book_browser                    = new Browser("browser", 6);
book_browser.param_search_name  = 'id';
book_browser.cookie_search_name = 'book_id';
book_hairlines    = initializeHairlineObject("vertical_hairline_container");
book_browser.addTrigger("activate", 
function(item) {
updatePageContent(item.id);
setBookCaption(item.id);});
book_browser.addTrigger("deactivate", 
function(item) {
book_hairlines.activate(item.browser.active_item);
setBookCaption(item.browser.active_item.id);});
book_browser.addTrigger("preview", 
function(item) {
book_hairlines.activate(item);
setBookCaption(item.id);});
book_browser.addTrigger("slots_loaded", 
function() {
decorateBookBrowser();
var last_slot   = book_browser.slotted_items[book_browser.slotted_items.length-1].dom_element;
var pos_offset  = Position.positionedOffset(last_slot);
var left_offset = pos_offset[0];
var dims        = Element.getDimensions(last_slot);
var width       = dims.width;
var following_link_offset = 40 + left_offset + width;
var following_link = $(book_browser.prefix + "browser_following_link");
following_link.style.left = following_link_offset + "px";});
BOOK_DATA.products.keys().each(function(key) {
var item = new Item(key);
var photo_info = BOOK_DATA.photos[key];
item.showInitialContent = function() {
this.dom_element.innerHTML = '<img src="' +BOOK_DATA.photos[key].cover.thumb+ '" ' +
'alt="' +BOOK_DATA.products[key].display_name+ '" ' +
'onload="imageLoaded()" />';};
book_browser.addItem(item);}  );
book_browser.showSlottedItems();}
function setBookCaption(book_id) {
var book = BOOK_DATA.products[book_id];
$("book_thumbs_labels").innerHTML = book.display_name;}
function imgOrDefault(locList) {
var collection_name = "MAGAZINE_DATA.photos";
try { 
var locStr = '["' + locList.join('"]["') + '"]';
return eval(collection_name + locStr);}
catch (ex) {
return "_default.gif";}}
function addToCart(book_id) { 
var book = BOOK_DATA.products[book_id];
minicart.add(book);}
function addItemsToBrowser(passedObj) {
init(); }
function deactivatePhotoBrowser() {
$A(["main_image_box", "caption", "hairline_container", "more_about", "photo_thumbs"]).each(
function(key) { $(key).innerHTML = ""; });
$("hairline_block").style.display = "none";}
function deleteEmptyRecords(arr) {
return $A(arr).findAll(
function(line) {
return (util.rmlines(line).length > 0);})
}
function getData(target_class_name) {
var data_object = $H();
var ds_data_divs = $A(document.getElementsByClassName(target_class_name));
ds_data_divs.each(function(div, idx) {
var book            = new Object();
book.book_id        = util.readDsDiv("book_id", div);
book.display_name      = util.readDsDiv("ds_title", div);
var artist_info	        = util.readDsDiv("ds_artist", div);
var artist_ary          = artist_info.split(';');
try {
var artist_id_line     = util.rmlines(artist_ary[0]);
var artist_name_line   = util.rmlines(artist_ary[1]);} catch (ex) {
var artist_id_line     = "";
var artist_name_line   = "";}
book.add_cart_url   = util.readDsDiv("ds_add_to_cart_link", div);
book.price          = util.readDsDiv("ds_price", div);
book.in_stock       = (parseInt(util.readDsDiv("on_hand", div)) > parseInt(util.readDsDiv("out_stock", div))); // add these divs
book.details        = util.readDsDiv("ds_details", div);
book.cart_name      = util.readDsDiv("cart_name", div);
book.item_number    = util.readDsDiv("ds_itemnum", div);
book.long_description = util.readDsDiv("ds_long_description", div);
book.artists = $A();
var artist_ids = artist_id_line.split(/\s*,\*/);
if (artist_ids.length == 1) {
book.artists[0] = {id: artist_id_line, name: artist_name_line};}
else{
var artist_names = artist_name_line.split(/and|,|&amp;|&/);
artist_ids.each(function(artist_id, idx) {
book.artists[idx] = {id: artist_id, name: artist_names[idx]};
});}
data_object[book.book_id] = book;});
return data_object;}
function getJsonResponse(ajax_url, callback) {
new Ajax.Request(ajax_url, {
method: 'get',
onComplete: callback});}
function imageLoaded() {
book_browser.SLOTS_LOADED++;
if (book_browser.SLOTS_LOADED == book_browser.number_of_slots) {
book_browser.trigger("slots_loaded");}}
function initializeHairlineObject(container_div_id) {
obj = new Object();
obj.container           = $(container_div_id);
obj.container.innerHTML = '';
obj.hairlines           = $H();
obj.activate            = function(item) {
item = $(item);
if (this.hairlines[item.id]) {
this.hairlines.keys().each(function(line_id, idx) {
this.hairlines[line_id].style.display  = (line_id == item.id) ? "block" : "none";}.bind(this));}    }.bind(obj);
obj.clear = function() {
if (this.container !== undefined) {
this.container.innerHTML = "";}}.bind(obj);
return obj;}
function decorateBookBrowser() {
book_hairlines.container.innerHTML = "";
book_browser.slotted_items.each(function(item, index) {
thumb = item.dom_element.getElementsByTagName("img")[0];
var dims  = Element.getDimensions(thumb);
var offset = Position.positionedOffset(thumb);
var leftOffset = dims.width/2 + offset[0] + 1;
var hairline_div  = document.createElement("div");
hairline_div.style.left= leftOffset + "px";
hairline_div.id = "hair_" + index;
Element.addClassName(hairline_div, "vhairline");
book_hairlines.container.appendChild(hairline_div);
book_hairlines.hairlines[item.id] = hairline_div;});  
book_hairlines.activate(book_browser.active_item);
var bt_baseline = $("book_thumbs_baseline");
var last_item = book_browser.slotted_items[book_browser.slotted_items.length-1];
var last_thumb  = last_item.dom_element.getElementsByTagName("img")[0];
bt_baseline.style.width   = Element.getDimensions(last_thumb).width + 
Position.positionedOffset(last_thumb)[0] + "px";}
function initializeSpreadHairlines() {
$("hairline_block").style.display = "block";
spread_hairlines.clear();
photo_browser.slotted_items.each(function(item, index) {
thumb  = item.dom_element.getElementsByTagName("img")[0];
var dims = Element.getDimensions(thumb);
var offset = Position.positionedOffset(thumb);
var topOffset = dims.height/2 + offset[1] + 1;
var hairline_div  = document.createElement("div");
hairline_div.style.top = topOffset + "px";
hairline_div.id  = "hair_" + index;
hairline_div.className = "hairline";
spread_hairlines.container.appendChild(hairline_div);
spread_hairlines.hairlines[item.id]       = hairline_div;});  
spread_hairlines.activate(photo_browser.active_item);}
function displayMoreAboutLinks(issue_number, article_id) {
var article_array         = MAGAZINE_DATA.issues[issue_number].articles;
$("more_about").innerHTML = (function() { 
var new_html="";
article_array.each(function(article, idx) {
if (article.id == article_id) {
new_html = article.artists.inject("more about", function(accumulator, artist_obj, index) {
return accumulator+ '<br /><a href="/artists/index.php?id=' +artist_obj.id+ '">' + 
artist_obj.name+ '</a>';});}});
return new_html;})(); }
function changeCaption(issue_number, spread_id) {
$('caption').innerHTML = '';
caption.issue_number   = issue_number;
caption.spread_id      = spread_id;
if (caption.data && caption.data[issue_number]) {
lookupCaption();} else {
loadCaptionData();}}
function loadCaptionData() {
if (util.strValueFor(MAGAZINE_DATA.issues[caption.issue_number].more_info)) {
getUrl = MAGAZINE_DATA.issues[caption.issue_number].more_info;
getUrl = getUrl.replace(/http:\/\/(www\.)?blindspot\.com/,'');}}
function lookupCaption() {
if (caption.data[caption.issue_number][caption.spread_id] != undefined)
{$('caption').innerHTML = caption.data[caption.issue_number][caption.spread_id];} else {
$('caption').innerHTML = "";}}
function extractString(text, start, end, type) {
if (type != undefined && type == 'pattern') {
var read_start = text.search(start);
if (read_start == -1) {
return false;}
var read_stop = text.search(end);  } else {
var read_start = text.indexOf(start);
if (read_start == -1) {
return false;}
read_start += start.length;
var read_stop = text.indexOf(end, read_start);} 
return text.substring(read_start, read_stop);}
function updateCaptionData(request) {
var issue_number = extractString(request.responseText,'<div id="issue_number">','</div>');
var spreadlines_div_content = extractString(request.responseText,'<div id="spread_info">','</div>');
if ( !(issue_number && spreadlines_div_content) ) {
return;}
var spreadlines = $A(util.rmbreaks(spreadlines_div_content).split(/\s*\<br[^\>]*\>\s*/i));
caption.data[caption.issue_number] = new Array();
spreads = new Array();
spreadlines.each(function(line) {
var pieces     = line.split(';');
var spread_id  = pieces[0];
var caption_string = pieces[1];
caption.data[issue_number][spread_id] = caption_string;});
lookupCaption();}
function loadJsonResponse(ajax_url, targetObjAccessor, nextFunction) {
getJsonResponse(ajax_url, function(request) {
val = targetObjAccessor(request);
nextFunction(val);});}
function initializeSpreadBrowser(book_id) {
spread_hairlines = initializeHairlineObject("hairline_container");
var spreads;
spreads      = $A(BOOK_DATA.photos[book_id]["spread"]);
if (spreads.length == 0) {
spreads = $A([{'thumb': '/images/book/cover/thumb/_default.gif', 
'full': '/images/book/cover/full/_default.gif'}]);}
photo_browser = Browser.instantiate(
{
'dom_add_point':      'photo_thumbs',
'number_of_slots':    6,
'browser_name':       'spreads',
'next_button':        'arrow_down.gif',
'back_button':        'arrow_up.gif'});
spreads.each(function(spread, index) {
var item = new Item(book_id + "_" + index);
item.showInitialContent = function() {
this.dom_element.innerHTML = '<img src="' + spread.thumb + '" ' +
'alt="' + 'spread photo ' + parseInt(index+1) + '" ' +
'onload="spreadLoaded()" />';};
photo_browser.addItem(item);});
photo_browser.addTrigger("activate", 
function(item) {
var item_index = item.browser.item_index_hash[item.id];
var new_src = spreads[item_index].full;
$("main_image_box").innerHTML = '<img src="' +new_src+ '" ' +
'alt="spread photo ' +parseInt(item_index+1)+ '" />';
spread_hairlines.activate(item);});
photo_browser.addTrigger("slots_loaded", 
function() {
initializeSpreadHairlines();});
photo_browser.addTrigger("preview", 
function(item) {
spread_hairlines.activate(item);});
photo_browser.addTrigger("deactivate", 
function(item) {
spread_hairlines.activate(item.browser.active_item);});
photo_browser.showSlottedItems();}
function displayShortListing(issue_number, article_id) {
deactivatePhotoBrowser();
Element.addClassName($("hairline_block"), "inactive");
container_div = $('main_image_box');
spreads      = $H(MAGAZINE_DATA.photos[issue_number][article_id]);
if (spreads.keys().length == 0) {
spreads = $H({'01': {'thumb': '_default.gif', 'full': '_default.gif'}});}
var spread_numbers = spreads.keys().sort();
for (i=0; i<Math.min(spread_numbers.length, 2); i++) {
var img_src = MAGAZINE_DATA.photos._paths['spread_full'] + '/' + spreads[spread_numbers[i]].full;
container_div.innerHTML += '<img src="' +img_src+ '" class="short_display" />';}
changeCaption(issue_number, article_id + "_" + spread_numbers[0])}
function spreadLoaded() {
photo_browser.SLOTS_LOADED++;
if (photo_browser.SLOTS_LOADED == photo_browser.number_of_slots) {
photo_browser.trigger("slots_loaded");}}
function updatePageContent(book_id) {
var book_content            = BOOK_DATA.products[book_id];
$("book_title").innerHTML   = book_content.display_name;
$("book_artist_line").innerHTML = "by " + 
book_content.artists.collect(function(artist_obj, index) {
return artist_obj.name;
}).join(', ');
$("details_display").innerHTML = book_content.details;
var store_controls_html     = book_content.price+ "<br />";
if (book_content.in_stock) {
store_controls_html      += '<a href="' +book_content.add_cart_url+ '">Purchase Now<br />';
store_controls_html      += "<a href=\"javascript:addToCart('" +book_id+ "')\">Add to Basket</a><br />";}
else {
store_controls_html      += 'Sold Out<br />';}
$("shopper_info").innerHTML = store_controls_html;
$('more_about').innerHTML = book_content.artists.inject("more about", 
function(accumulator, artist_obj, index) {
return accumulator+ '<br /><a href="/artists/index.php?id=' +artist_obj.id+ '">' + 
artist_obj.name+ '</a>';});
/*
 +  '<br /><br />' +
'more about<br /><span id="more_about_book">this book</span>';
util.addEventListener($('more_about_book'), 'click', 
function() { util.setUpScrollingText($("main_image_box"), book_content.long_description);});
*/
$('about_book').innerHTML = '<br /><br />' + 'more about<br /><span id="more_about_book">this book</span>';
util.addEventListener($('more_about_book'), 'click', 
function() { util.setUpScrollingText($("main_image_box"), book_content.long_description);});
initializeSpreadBrowser(book_id);}