File: /home/mmickelson/theflexguy.com/wp-content/plugins/wordpress-media-flickr/wp-media-flickr.js
var $ = jQuery;
String.prototype.htmlspecialchars = function() {
var str = this;
str = str.replace(/&/g,"&");
str = str.replace(/"/g,""");
str = str.replace(/'/g,"'");
str = str.replace(/</g,"<");
str = str.replace(/>/g,">");
return str;
}
String.prototype.unhtmlspecialchars = function() {
var str = this;
str = str.replace(/&/g, "&");
str = str.replace(/"/g, "\"");
str = str.replace(/'/g, "'");
str = str.replace(/</g, "<");
str = str.replace(/>/g, ">");
return str;
}
function MediaFlickr() {
this.page = 1;
this.user_id = null;
this.query = null;
this.photoset_id = null;
this.alignments = ['alignment_none', 'alignment_left', 'alignment_center', 'alignment_right'];
this.sizes = new Object();
this.sizes.Square = 'size_sq';
this.sizes.Thumbnail = 'size_t';
this.sizes.Small = 'size_s';
this.sizes.Medium = 'size_m';
this.sizes.Large = 'size_l';
this.sizes.Original = 'size_o';
this.photos = {};
this.flickr_url = '';
this.title_text = '';
this.flickrGetPhotoSizes = function(photo_id) {
var params = {};
params.api_key = flickr_api_key;
params.photo_id = photo_id;
params.format = 'json';
params.jsoncallback = 'mediaFlickr.callbackPhotoSizes';
params.method = 'flickr.photos.getSizes';
var url = 'http://www.flickr.com/services/rest/?'+
this.obj2query(params) + '&time='+(new Date()).getTime();
$.getScript(url);
}
this.callbackPhotoSizes = function(data) {
if (! data) return this.error(data);
if (! data.sizes) return this.error(data);
var list = data.sizes.size;
if (! list) return this.error(data);
if (! list.length) return this.error(data);
for(label in this.sizes) {
var size = this.sizes[label];
var i = 0;
for(i=0;i<list.length;i++) {
if(list[i].label == label && list[i].source != '') {
$('#div_'+size).show();
$('#'+size).attr('rel', list[i].source);
if($('#div_'+size+'_disabled').size()) {
$('#div_'+size+'_disabled').hide();
}
break;
}
}
if(i >= list.length) {
$('#div_'+size).hide();
$('#'+size).removeAttr('rel');
if($('#div_'+size+'_disabled').size()) {
$('#div_'+size+'_disabled').show();
}
}
}
$('#put_dialog').show();
$('#put_background').show();
}
this.changeSearchType = function() {
if($('#flickr_search_0:checked').size()) {
$('#flickr_search_query').show();
$('#photoset').hide();
}else if($('#flickr_search_1:checked').size()) {
$('#flickr_search_query').hide();
$('#photoset').show();
}else{
$('#flickr_search_query').show();
$('#photoset').hide();
}
}
this.flickrGetPhotoSetsList = function() {
var params = {};
params.api_key = flickr_api_key;
params.user_id = flickr_user_id;
params.format = 'json';
params.jsoncallback = 'mediaFlickr.callbackPhotoSetsList';
params.method = 'flickr.photosets.getList';
var url = 'http://www.flickr.com/services/rest/?'+
this.obj2query(params) + '&time='+(new Date()).getTime();
$.getScript(url);
}
this.callbackPhotoSetsList = function(data) {
if(!data || !data.photosets || !data.photosets.photoset) {
document.getElemenetById('photosets').style.display = 'none';
}
var index = 0;
for(var i=0;i<data.photosets.photoset.length;i++) {
$('#photoset').append(new Option(data.photosets.photoset[i].title._content, data.photosets.photoset[i].id));
}
}
this.searchPhoto = function(paging) {
if(paging == 0) {
this.page = 1;
if($('#flickr_search_0:checked').size()) {
this.user_id = flickr_user_id;
this.photoset_id = null;
}else if($('#flickr_search_1:checked').size()) {
this.user_id = flickr_user_id;
this.photoset_id = $('#photoset option:selected').val();
}else{
this.user_id = null;
this.photoset_id = null;
}
this.query = $('#flickr_search_query').val();
}else{
this.page += paging;
}
if(this.user_id) {
this.flickrPhotoSearch({ api_key: flickr_api_key, text: this.query, page: this.page, user_id: this.user_id, photoset_id: this.photoset_id });
}else{
this.flickrPhotoSearch({ api_key: flickr_api_key, text: this.query, page: this.page });
}
return false;
}
this.flickrPhotoSearch = function(params) {
params.per_page = 18;
params.sort = 'date-posted-desc';
params.format = 'json';
params.jsoncallback = 'mediaFlickr.callbackSearchPhotos';
params.extras = 'url_sq,url_m';
if(!params.text && !params.user_id) {
params.method = 'flickr.photos.getRecent';
}else if(params.photoset_id){
params.method = 'flickr.photosets.getPhotos';
}else{
params.method = 'flickr.photos.search';
}
this.clearItems();
$('#items').html('<img src="'+plugin_uri+'/loading.gif" />');
var url = 'http://www.flickr.com/services/rest/?'+
this.obj2query(params) + '&time='+(new Date()).getTime();
$.getScript(url);
}
this.callbackSearchPhotos = function(data) {
if(!data) return this.error(data);
if(!data.photos && !data.photoset) return this.error(data);
var photos = data.photos;
if(!photos) photos = data.photoset;
var list = photos.photo;
if(!list) return this.error(data);
if(!list.length) return this.error(data);
this.clearItems();
$('#pages').html(msg_pages.replace(/%1\$s/, photos.page).replace(/%2\$s/, photos.pages).replace(/%3\$s/, photos.total));
if(photos.page > 1) {
$('#prev_page').show();
}
if(photos.page < photos.pages) {
$('#next_page').show();
}
this.photos = {};
for(var i=0; i<list.length; i++) {
var photo = list[i];
photo.short_title = photo.title.replace(/^(.{17}).*$/, '$1...');
photo.title = photo.title;
var image_s_url = photo.url_sq;
var image_m_url = photo.url_m;
var owner = photo.owner;
if(!owner) {
owner = this.user_id;
}
var flickr_url = 'http://www.flickr.com/photos/'+
owner+'/'+photo.id+'/';
if(setting_photo_link) {
flickr_url = 'http://farm'+photo.farm+'.static.flickr.com/'+photo.server+
'/'+photo.id+'_'+photo.secret+'.jpg';
}
this.photos[photo.id] = new Object();
this.photos[photo.id].title = photo.title;
this.photos[photo.id].flickr_url = flickr_url;
var div = document.createElement('div');
$(div).addClass('flickr_photo');
var img = document.createElement('img');
img.setAttribute('src', image_s_url);
img.setAttribute('alt', photo.title);
img.setAttribute('title', photo.title);
img.setAttribute('rel', photo.id);
$(img).addClass('flickr_image');
$(img).click(function() {
window['mediaFlickr'].showInsertImageDialog($(this).attr('rel'));
});
var atag = document.createElement('a');
atag.href = flickr_url;
atag.title = atag.tip = "show on Flickr";
atag.target = '_blank';
atag.innerHTML = '<img src="'+plugin_uri+'/show-flickr.gif" alt="show on Flickr"/>';
var title = document.createElement('div');
$(title).addClass('flickr_title');
var span = document.createElement('span');
span.innerHTML = photo.short_title.replace(/(.{3})/g, '$1&wbr;').htmlspecialchars().replace(/&wbr;/g, '<wbr/>');
span.setAttribute('title', photo.title);
span.setAttribute('rel', photo.id);
$(span).click(function() {
window['mediaFlickr'].showInsertImageDialog($(this).attr('rel'));
});
title.appendChild(atag);
title.innerHTML += ' ';
title.appendChild(span);
div.appendChild(img);
div.appendChild(title);
$('#items').append(div);
}
}
this.showInsertImageDialog = function(photo_id) {
this.flickr_url = this.photos[photo_id].flickr_url;
this.title_text = this.photos[photo_id].title;
this.flickrGetPhotoSizes(photo_id);
if(!$('#alignments :radio:checked').size()) {
$('#alignment_none').attr('checked', 'checked');
}
if(!$('#sizes :radio:checked').size()) {
$('#size_t').attr('checked', 'checked');
}
}
this.insertImage = function() {
flickr_url = this.flickr_url;
title_text = this.title_text;
if($('#sizes :radio:checked')) {
img_url = $('#sizes :radio:checked').attr('rel');
}
var img = $('<img />');
img.attr('src', img_url).attr('alt', title_text);
var a = $('<a />');
a.attr('href', flickr_url).attr('title', title_text).attr('rel', setting_link_rel);
a.addClass(setting_link_class);
var p = $('<p />');
var alignment = null;
if($('#alignments :radio:checked').size()) {
alignment = $('#alignments :radio:checked').val();
}
if(alignment != 'none') {
if(alignment != 'center') {
img.css('float', alignment).addClass('align'+alignment);
}else{
img.addClass('alignnone');
p.css('text-align', 'center');
}
}
a.append(img);
p.append(a);
$('#put_dialog').hide();
$('#put_background').hide();
this.send_to_editor(p.html(), $('#continue_insert:checked').size() == 0);
}
this.cancelInsertImage = function() {
$('#put_dialog').hide();
$('#put_background').hide();
}
this.changeSize = function() {
var size = null;
if($('#sizes :radio:checked').size()) {
size = $('#sizes :radio:checked').val();
}
if(size && $('#size_image').attr('rel') != size) {
$('#size_preview').html('<img id="size_image" rel="'+size+'" src="'+plugin_uri+'/'+size+'.png" alt=""/>');
}
}
this.changeAlignment = function() {
var alignment = null;
if($('#alignments :radio:checked').size()) {
alignment = $('#alignments :radio:checked').val();
}
if(alignment && $('#alignment_image').attr('rel') != alignment) {
$('#alignment_preview').html('<img id="alignment_image" rel="'+alignment+'" src="'+plugin_uri+'/alignment_'+alignment+'.png" alt=""/>');
}
}
this.clearItems = function() {
$('#items').empty();
$('#next_page').hide();
$('#prev_page').hide();
}
this.obj2query = function(obj) {
var list = [];
for(var key in obj) {
var k = encodeURIComponent(key);
var v = encodeURIComponent(obj[key]);
list[list.length] = k+'='+v;
}
var query = list.join('&');
return query;
}
this.error = function(data) {
this.clearItems();
if(data && data.photos && data.photos.photo) {
$('#items').html(flickr_errors[0]);
}else if(data && data.photoset && data.photoset.photo) {
$('#items').html(flickr_errors[0]);
}else{
var code = data.code;
if(!flickr_errors[code]) {
code = 999;
}
alert(data.code + ':' + flickr_errors[code]);
}
}
this.send_to_editor = function(h, close) {
var ed;
if ( typeof top.tinyMCE != 'undefined' && ( ed = top.tinyMCE.activeEditor ) && !ed.isHidden() ) {
// restore caret position on IE
if ( top.tinymce.isIE && ed.windowManager.insertimagebookmark )
ed.selection.moveToBookmark(ed.windowManager.insertimagebookmark);
if ( h.indexOf('[caption') === 0 ) {
if ( ed.plugins.wpeditimage )
h = ed.plugins.wpeditimage._do_shcode(h);
} else if ( h.indexOf('[gallery') === 0 ) {
if ( ed.plugins.wpgallery )
h = ed.plugins.wpgallery._do_gallery(h);
} else if ( h.indexOf('[embed') === 0 ) {
if ( ed.plugins.wordpress )
h = ed.plugins.wordpress._setEmbed(h);
}
ed.execCommand('mceInsertContent', false, h);
$('iframe#tinymce:first').contents().find('img').each(function() { this.src = this.src });
} else if ( typeof top.edInsertContent == 'function' ) {
top.edInsertContent(top.edCanvas, h);
} else {
top.jQuery( top.edCanvas ).val( top.jQuery( top.edCanvas ).val() + h );
}
if(close) {
top.tb_remove();
}
}
}
var mediaFlickr = new MediaFlickr();
$(document).ready(function() {
$('div#alignments input').each(function(element) {
$(element).change(mediaFlickr.changeAlignment);
});
$('div#sizes input').each(function(element) {
$(element).change(mediaFlickr.changeSize);
});
$('input.searchTypes').each(function(element) {
$(element).change(mediaFlickr.changeSearchType);
});
new Image().src = plugin_uri+'/alignment_none.png';
new Image().src = plugin_uri+'/alignment_left.png';
new Image().src = plugin_uri+'/alignment_center.png';
new Image().src = plugin_uri+'/alignment_right.png';
new Image().src = plugin_uri+'/size_sq.png';
new Image().src = plugin_uri+'/size_t.png';
new Image().src = plugin_uri+'/size_s.png';
new Image().src = plugin_uri+'/size_m.png';
new Image().src = plugin_uri+'/size_l.png';
new Image().src = plugin_uri+'/size_o.png';
mediaFlickr.searchPhoto(0);
if(flickr_user_id) {
mediaFlickr.flickrGetPhotoSetsList();
}
});