var EDITION_DATA = new Object();
var edition_browser;
var env = 'dev';
function init() {
var pattern = new RegExp("blindspot.com");
if (pattern.exec(document.location)) {
env = "live";}
if (EDITION_DATA.photos === undefined) {
if (env == "live") {
var_closure = function(req) {
EDITION_DATA.photos = eval('(' + req.responseText + ')');
return EDITION_DATA.photos;};
util.loadJsonResponse("/data/photos.php?medium=editions",
var_closure,
continueInit);
return;} else {
EDITION_DATA.photos = loadCannedJson('edition');}}
EDITION_DATA.editions = getData("ds_data");
EDITION_DATA.sorted_keys = $A(EDITION_DATA.editions.keys().sortBy(function(key) {
var obj = EDITION_DATA.editions[key];
return (obj.size) ? obj.values()[0].sort_phrase : obj.sort_phrase}));
var param_search_name = 'edition_id';
if (!readParam(param_search_name)) {
displayLandingPage();
return;
}
edition_browser = new Browser("browser", 6);
edition_browser.param_search_name = param_search_name;
edition_browser.addTrigger("activate",
function(item) {
updatePageContent(item.id);
labelThumbnail(item);});
edition_browser.addTrigger("deactivate",
function(item) {
clearLabelThumbnails(item);
edition_browser.active_item.showActiveContent();});
edition_browser.addTrigger("preview",
function(item) {
edition_browser.active_item.showDefaultContent();
labelThumbnail(item);});
edition_browser.addTrigger("show_slots",
function() {
labelThumbnail(this.active_item);
var move_arrow = function() {
var last_slot = this.slotted_items[this.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 = 35 + left_offset + width;
var following_link = $(this.prefix + "browser_following_link");
return;}.bind(this);
var test_thumbs_dims = function() {
var testing = true;
for (i = 0; i < this.slotted_items.length; i++) {
var slot = this.slotted_items[i];
var dims = Element.getDimensions(slot.dom_element);
if (dims.height < 48) {
testing = false;
break;}}
return testing;}.bind(this);
var placeArrow = function(browser, interval, timeleft) {
if (test_thumbs_dims()) {
move_arrow();} else {
if ((timeleft -= interval) > 0);
setTimeout(function() {
placeArrow(browser, interval, timeleft);},
interval);}};
placeArrow(this, 200, 2000);}.bind(edition_browser));
EDITION_DATA.sorted_keys.each(function(key) {
var item = new Item(key);
if (EDITION_DATA.photos[key] == undefined || EDITION_DATA.photos[key] == null) {
EDITION_DATA.photos[key] = {
'thumb': '_default.gif',
'full': '_default.gif'};}
var photo_info = EDITION_DATA.photos[key];
item.showInitialContent = function() {
this.dom_element.innerHTML = '<img src="' + EDITION_DATA.photos['_paths'].edition_thumb + '/' + photo_info.thumb + '" ' +
'alt="thumb"/>';};
item.showActiveContent = function() {
Element.removeClassName("preview");
Element.addClassName(this.dom_element, "on");};
item.showPreviewContent = function() {
Element.addClassName(this.dom_element, "preview");};
item.showDefaultContent = function() {
Element.removeClassName(this.dom_element, "on");
Element.removeClassName(this.dom_element, "preview");};
edition_browser.addItem(item);});
edition_browser.showSlottedItems();
var last_slot = edition_browser.slotted_items[edition_browser.slotted_items.length - 1].dom_element;
return;}
function addToCart(key_str) {
var key_data = key_str.split('|');
var ed_id = key_data[0];
var item_info = (EDITION_DATA.editions[ed_id][key_data[1]] == undefined) ? EDITION_DATA.editions[ed_id] : EDITION_DATA.editions[ed_id][key_data[1]];
minicart.add(item_info);}
function continueInit(passedObj) {
init();}
function getData(target_class_name) {
var data_object = $H();
var ds_data_divs = $$("." + target_class_name);
ds_data_divs.each(function(div, idx) {
var edition = new Object();
edition.edition_id = util.readDsDiv("edition_id", div);
edition.sku = util.readDsDiv("sku", div);
edition.display_name = util.readDsDiv("display_name", div);
var artist_info = util.readDsDiv("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 = "";}
try {
edition.artist_alt_display = util.rmlines(artist_ary[2]);} catch(ex) {
edition.artist_alt_display = false;}
edition.add_cart_url = util.readDsDiv("add_cart", div);
edition.price = util.readDsDiv("price", div);
edition.in_stock = (parseInt(util.readDsDiv("on_hand", div)) > parseInt(util.readDsDiv("out_stock", div)));
edition.details = util.readDsDiv("details_display", div);
edition.issue_featured = util.readDsDiv("issue_featured", div);
edition.more_info = util.readDsDiv("more_info", div);
edition.cart_name = util.readDsDiv("cart_name", div);
edition.item_number = util.readDsDiv("item_num", div);
edition.sort_phrase = util.readDsDiv("search_sort_keywords", div) ?
util.readDsDiv("search_sort_keywords", div) : edition.edition_id;
edition.artists = $A();
var artist_ids = artist_id_line.split(/\s*,\s*/);
if (artist_ids.length == 1) {
edition.artists[0] = {
id: artist_id_line,
name: artist_name_line};}
else {
var artist_names = $A(artist_name_line.split(/,/));
artist_names = artist_names.collect(function(name) {
return name.replace(/^\s*(and|&|amp;)\s*/, '')});
artist_ids.each(function(artist_id, idx) {
edition.artists[idx] = {
id: artist_id,
name: artist_names[idx]};});}
edition.instructions = false;
var special_info = util.readDsDiv("special_info", div);
if (special_info != "") {
var split_array = special_info.split(/\s*;\s*/);
if (split_array.length > 1) {
edition.instructions = split_array[1];
}}
edition.special_language = false;
edition.special_language = util.readDsDiv("special_language", div);
if (data_object[edition.edition_id])
{
if (! (data_object[edition.edition_id].keys)) {
var existing_edition = data_object[edition.edition_id];
var sku = data_object[edition.edition_id].sku;
data_object[edition.edition_id] = $H();
data_object[edition.edition_id][sku] = existing_edition;}
data_object[edition.edition_id][edition.sku] = edition} else {
data_object[edition.edition_id] = edition;}});
return data_object;}
function clearLabelThumbnails(item) {
labelThumbnail(item.browser.active_item);}
function getJsonResponse(ajax_url, callback) {
new Ajax.Request(ajax_url, {
method: 'get',
onComplete: callback});}
function displayLandingPage() {
var thumb_path = EDITION_DATA.photos._paths['landing_thumb'];
var full_path        = EDITION_DATA.photos._paths['edition_full'];
var landing_html     = "";
var featured_edition = EDITION_DATA.editions.find(function(p) {
return p.value.instructions == "featured"
});
if (!(featured_edition === undefined)) {  
featured_edition = featured_edition.value;
var full_image_src   = full_path + '/' + featured_edition.edition_id + '.jpg';
var artists_label    = (featured_edition.artist_alt_display) ? 
featured_edition.artist_alt_display : 
util.display_artists(featured_edition);
var title_label      = featured_edition.display_name
var edition_a_href   = '?edition_id=' + featured_edition.edition_id;
var edition_a_title  = artists_label + ': ' + title_label;
var featuring_text   =  artists_label + "<br />" + title_label;
landing_html = '<div id="current_edition_box">' +
'<a href="' + edition_a_href + '" title = "' + edition_a_title + '">' +
'<img src="' + full_image_src + '" width="279" height="232" alt="' + edition_a_title + '"/>' + '</a>' +
'<div class="text_container">' +
'<div class="featured_text"><div class="column_header">' +
'<a href="' + edition_a_href + '" title = "' + edition_a_title + '">Featured Edition</a>' + '</div>' + 
'<div class="body_copy">' + featuring_text + '</div></div>' + 
'<div class="boilerplate">' +
'<div class="column_header accent_color">Blind Spot Editions</div>' + 
'<div class="body_copy"><p>Blind Spot published its inaugural issue in 1993, and is still the only journal that focuses solely on photographs. Blind Spot Editions provide the opportunity to own a piece of signed, limited edition fine art at an affordable price.</p>' +
'<p>Click on a thumbnail below for more information about each edition.</p></div>' + 
'</div>' +
'</div></div>';
}
else if ($('landing_highlight_text') && util.rmlines($('landing_highlight_text').innerHTML) != '') {
landing_html = '<div id="highlight_text">' + 
$('landing_highlight_text').innerHTML +
'</div>';
}
landing_html += '<table id="editions_listing" cellspacing="0" cellpadding="0">' +
'<col span="4" width="160"/><col class="last" width="150"/>';
var num_columns = 5;
EDITION_DATA.sorted_keys.each(function(key, i) {
var edition = EDITION_DATA.editions[key];
if (edition.edition_id === undefined) { edition = edition[key]; }
var caption    = (edition.artist_alt_display) ? 
edition.artist_alt_display :
util.display_artists(edition);
var edition_id = edition.edition_id;
var thumb_src = thumb_path + '/' + edition_id + '.jpg';
var col = i % num_columns + 1;
if (col==1) {
landing_html += '<tr>';
}
landing_html += '<td><a href="page4.html?edition_id=' +edition_id+ '"><img src="' +thumb_src+ '" width="150" height="125" alt="' + caption + '" /></a>' +
'<div class="caption" style="width:150px"><a href="page4.html?edition_id=' +edition_id+ '">' +caption+ '</a></div></td>';
if (col==0) {
landing_html += '</tr>';
}
});
landing_html += '</table>';
$('content').innerHTML = landing_html;
}
function imgOrDefault(locList) {
var collection_name = "EDITION_DATA.photos";
try {
var locStr = '["' + locList.join('"]["') + '"]';
var returnString = eval(collection_name + locStr);
if (returnString == '') {
throw new EvalError();}
return returnString;}
catch(ex) {
return "_default.gif";}}
function labelThumbnail(item) {
var edition_info = EDITION_DATA.editions[item.id];
if (edition_info.keys) {
edition_info = edition_info[edition_info.keys()[0]];}
if (! (item.dom_element)) {
return;}
var t = item.dom_element.getElementsByTagName("img")[0];
$('thumbnail_labels').innerHTML = '';
var browser = item.browser;
var item_idx = browser.item_index_hash[item.id];
if (item_idx >= browser.first_slot_index &&
item_idx < browser.first_slot_index + browser.number_of_slots) {
var pos_offset = Position.positionedOffset(t);
var left_offset = pos_offset[0];
var label_div = document.createElement('div');
label_div.id = "thumbnail_label";
label_div.style.left = left_offset + "px";
label_div.innerHTML = edition_info.artist_alt_display ? edition_info.artist_alt_display :
util.display_artists(edition_info);
$('thumbnail_labels').appendChild(label_div);}}
function loadJsonResponse(ajax_url, targetObjAccessor, nextFunction) {
getJsonResponse(ajax_url,
function(request) {
val = targetObjAccessor(request);
nextFunction(val);});}
function updatePageContentArtist(info) {
var artist_line = document.createElement("div");
artist_line.innerHTML = info.artist_alt_display ? info.artist_alt_display : util.display_artists(info);
Element.addClassName(artist_line, "column_header");
$('left_column').appendChild(artist_line);}
function updatePageEditionTitle(info) {
var edition_title = document.createElement("div");
Element.addClassName(edition_title, "edition_title");
edition_title.innerHTML = info.display_name;
$('left_column').appendChild(edition_title);}
function updatePageContentSpacer(vspace) {
var spacer = document.createElement("div");
spacer.style.height = vspace;
spacer.innerHTML = '<br />';
$('left_column').appendChild(spacer);}
function updatePageContentDetails(info) {
var details_div = document.createElement("div");
details_div.className = 'details';
details_div.innerHTML += info.details;
$('left_column').appendChild(details_div);}
function updatePageContentStoreControls(info) {
var store_controls = document.createElement("div");
store_controls.className = 'store_controls';
if (info.special_language) {
store_controls.innerHTML = info.special_language;} else {
store_controls.innerHTML = info.price + '<br />';
if (info.in_stock) {
store_controls.innerHTML += '<a href="' + info.add_cart_url + '">Purchase Now</a><br />' +
"<a href=\"javascript:addToCart('" + info.edition_id + "|" + info.sku + "')\">Add to Basket</a><br />";} else {
store_controls.innerHTML += '<br />Sold Out';}}
$('left_column').appendChild(store_controls);}
function updatePageFeaturedIssue(info) {
if (! (util.isEmptyField(info.issue_featured))) {
var ajax_url = "/data/photos.php?medium=issue_cover&issue=" + info.issue_featured;
var placeIssue = function(request) {
var filename = request.responseText;
var featured_in_issue = document.createElement("div");
Element.addClassName(featured_in_issue, 'featured_in_issue');
featured_in_issue.innerHTML = '<a href="page2.html?mag_id=' +
info.issue_featured + '&artist_id=' +
info.artists[0].id + '">' +
'<img src="' + filename + '" ' +
'alt="Cover of Issue ' + info.issue_featured + '"/></a><br clear="all"/>' +
'Featured in Issue ' + info.issue_featured;
$('left_column').appendChild(featured_in_issue);}
new Ajax.Request(ajax_url, {
method: 'get',
onComplete: placeIssue});}}
function popup() {
var overlay = $('overlay'), frame = $('frame'), blowup = $('blowup');
var owidth = 0, oheight = 0;
if (document.documentElement.clientWidth) {
owidth = document.documentElement.clientWidth; oheight = document.documentElement.clientHeight;
} else if (window.innerWidth) {
owidth = window.innerWidth; oheight = window.innerHeight;
} else if (document.body.offsetWidth) {
owidth = document.body.offsetWidth; oheight = document.body.offsetHeight;
}
oheight = Math.max(665, oheight);
var popup_url = EDITION_DATA.photos._paths.edition_popup + "/" + EDITION_DATA.photos[this.edition_id].popup;
var blowup_image = new Image();
blowup_image.src = "http://blindspot.com" + popup_url;
overlay.style.height = "" + oheight +"px";
overlay.style.width  = "" + owidth + "px";
blowup.update();
var new_img = document.createElement("img"); 
Element.observe(new_img, 'load', function() {
blowup.appendChild(new_img);
frame.style.left = "" + owidth/2  - 50 - blowup_image.width/2 + "px";
frame.style.top  = "" + oheight/2 - 50 - blowup_image.height/2 + "px";
Effect.Appear(frame); Effect.Appear(overlay,{duration: 1.5, to: .75}); 
});
new_img.src = blowup_image.src;
}
var image_blowup;
function updateMainImage(info) {
Element.stopObserving($('main_image'), 'click', image_blowup);
Element.stopObserving($('popup_control'), 'click', image_blowup);
image_blowup = popup.bindAsEventListener(info);
$('main_image').innerHTML = '<img id="edition_full" src="' + EDITION_DATA.photos['_paths'].edition_full + '/' +
imgOrDefault([info.edition_id, 'full']) + '"/>';
Element.show($('popup_control'));
Element.observe($('main_image'), 'click', image_blowup);
Element.observe($('popup_control'), 'click', image_blowup);
Element.observe($('popup_close'), 'click', function() {
Effect.Fade('overlay'); Effect.Fade('frame', {duration: 1.5});
});
$('more_about').innerHTML = info.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>';});}
function updatePageContent(item_id) {
$('left_column').innerHTML = '';
var edition_info = EDITION_DATA.editions[item_id];
if (edition_info.keys) {
var keys = edition_info.keys();
var k0 = keys[0];
updatePageContentArtist(edition_info[k0]);
updatePageEditionTitle(edition_info[k0]);
keys.each(function(k) {
updatePageContentStoreControls(edition_info[k]);
updatePageContentDetails(edition_info[k]);});
updatePageFeaturedIssue(edition_info[k0]);
updateMainImage(edition_info[k0]);}
else {
updatePageContentArtist(edition_info);
updatePageEditionTitle(edition_info);
updatePageContentStoreControls(edition_info);
updatePageContentDetails(edition_info);
updatePageFeaturedIssue(edition_info);
updateMainImage(edition_info);}}