function displayFlags(img_list,$displayDiv) { var img_list_len = img_list.length; if (img_list_len==0) { return; } img_list.sort(); var root_img_re = /^.*\/(.*?)\..*?$/; var callback_count = 0; var i; for (i=0; i wind things up doneDisplayKiwiana(img_list); } }; imageObj.src = img_url; imageObj.height = 150; imageObj.title = title.toUpperCase(); imageObj.country = imageObj.title; imageObj.id = "flag-img-" + i; var $a = $(''); $a.attr("href",img_url); $a.append(imageObj); $displayDiv.append($a); } } function doneDisplayKiwiana(img_list) { console.log("doneDisplayKiwiana()"); /*globals $*/ /*jslint vars: true*/ $('a').click(function() {'use strict'; var meta_str; var href = this.href; var target = window.parent; // Convert Non-SVG images to data URL first // (this could also have been done server-side by the library) if (this.href.indexOf('.svg') === -1) { meta_str = JSON.stringify({ name: $(this).text(), id: href }); target.postMessage(meta_str, '*'); var img = new Image(); img.onload = function() { var canvas = document.createElement('canvas'); canvas.width = this.width; canvas.height = this.height; // load the raster image into the canvas canvas.getContext('2d').drawImage(this, 0, 0); // retrieve the data: URL var dataurl; try { dataurl = canvas.toDataURL(); } catch(err) { // This fails in Firefox with file:// URLs :( alert("Data URL conversion failed: " + err); dataurl = ""; } target.postMessage('|' + href + '|' + dataurl, '*'); }; img.src = href; } else { // Send metadata (also indicates file is about to be sent) meta_str = JSON.stringify({ name: $(this).text(), id: href }); target.postMessage(meta_str, '*'); // Do ajax request for image's href value $.get(href, function(data) { data = '|' + href + '|' + data; // This is where the magic happens! target.postMessage(data, '*'); }, 'html'); // 'html' is necessary to keep returned data as a string } return false; }); }