var id_key = "99cd11bd-7c1c-419b-8a00-b374e2850325";
var id_account = "dublinsport";

var gallery_width = 570;
var cols = 3;
var picsizes = new Array(48,100,160,240,500,800,1200);
var picpadding = 0;
//
var col_index = 0;
//
var json_itemsperpage = "12";
var json_sortby = "recent";
var json_extras = "items_item_owner,items_item_sizes_" + picsizes[2] + ",items_item_description";
var json_extras_itemsizes = "items_item_sizes_" + picsizes[2];

var cur_album = null;
var pagination_max_num_pages = 5;

//
var slide_width = ((gallery_width / cols) - (picpadding * 2));
//
var num_display= 5; // default  - should get overwritten by preference

jQuery(document).ready(function(){
	// paste response into this online parser to see object structure
	// http://json.parser.online.fr/
	getJSONPhotos(null,1,json_itemsperpage,json_sortby,json_extras);
	// bring in albums for sidebar widget
	//if($("#pix_albums")) window.alert("pix albums widget exists");
	// hopefully my variable exists here, 
	getJSONAlbums(1,num_display,"top","albums_album_owner");
});

// main handlers - switch between two
function getJSONPhotos(album_id,pageno,itemsperpage,sortby,extras) {
	jQuery.getJSON('http://api.pix.ie/v0.81/account/' + id_account + '/photos.json?oauth_consumer_key=' + id_key + '&page=' + pageno + '&perpage=' + itemsperpage + '&sortby=' + sortby + '&extras=' + extras + '&jsonp=?', function(data) { renderPixGallery(data,"getJSONPhotos"); });
}

function getJSONAlbumPhotos(album_id,pageno,itemsperpage,sortby,extras) {
	cur_album = album_id;
	//http://api.pix.ie/v0.81/account/dublinsport/album/368071/photos?oauth_consumer_key=99cd11bd-7c1c-419b-8a00-b374e2850325&page=1&perpage=1&sortby=recent&extras=items_item_sizes_500
	jQuery.getJSON('http://api.pix.ie/v0.81/account/' + id_account + '/album/' + album_id + '/photos.json?oauth_consumer_key=' + id_key + '&page=' + pageno + '&perpage=' + itemsperpage + '&sortby=' + sortby + '&extras=items_item_owner,' + extras + ',items_item_description&jsonp=?', function(data) { renderPixGallery(data,"getJSONAlbumPhotos"); });
}
//

function getJSONAlbums(pageno,itemsperpage,sortby,extras) {
	jQuery.getJSON('http://api.pix.ie/v0.81/account/' + id_account + '/albums.json?oauth_consumer_key=' + id_key + '&page=' + pageno + '&perpage=' + itemsperpage + '&sortby=' + sortby + '&extras=' + extras + '&jsonp=?', function(data) { renderPixAlbums(data); });
}

function generateImageThumb(url,src,w,h,t,d) {
	// process date
	var thumb_date = new Date(d * 1000);
	thumb_date = thumb_date.toGMTString();
	var thumb_block = '';
	thumb_block += "\n\t" + '<div class="sw haslayout">';
	thumb_block += "\n\t\t" + '<div class="sw1">';
	thumb_block += "\n\t\t\t" + '<div class="sw2">';
	thumb_block += "\n\t\t\t\t" + '<div class="sw3">';
	thumb_block += "\n\t\t\t\t\t" + '<div class="sw4">';
	thumb_block += "\n\t\t\t\t\t\t" + '<div class="matte">';
	thumb_block += "\n\t\t\t\t\t\t\t" + '<div style="width: '+w+'px; height: '+h+'px;" class="thumbnail">';
	thumb_block += "\n\t\t\t\t\t\t\t\t" + '<a href="' + url + '" class="pix_ie">';
	thumb_block += "\n\t\t\t\t\t\t\t\t\t" + '<img src="' + src + '" width="' + w + '" height="' + h + '" alt="' + t + '"/>';
	thumb_block += "\n\t\t\t\t\t\t\t\t" + '</a>';
	thumb_block += "\n\t\t\t\t\t\t\t" + '</div>';
	thumb_block += "\n\t\t\t\t\t\t\t" + '<div class="caption" style="width:' + w + 'px">' + t + '</div>';
	thumb_block += "\n\t\t\t\t\t\t\t" + '<div class="caption_date" style="width:' + w + 'px">' + thumb_date + '</div>';
	thumb_block += "\n\t\t\t\t\t\t" + '</div>';
	thumb_block += "\n\t\t\t\t\t" + '</div>';
	thumb_block += "\n\t\t\t\t" + '</div>';
	thumb_block += "\n\t\t\t" + '</div>';
	thumb_block += "\n\t\t" + '</div>';
	thumb_block += "\n\t" + '</div>';
	return thumb_block;
}

function generatePagination(f,p,i,c,t,r) {
	//var f = "getJSONPhotos";
	// protect against t being less than r
	r=(t>r)?r:t-1;
	//
	var buff_1 = '';
	var buff_2 = '';
	// math for page nav
	var s = (p + Math.ceil(r/2) <= r) ? 1 : p - Math.floor(r/2);
	s = (p + Math.ceil(r/2) < t) ? s : t - r;
	var e = (s + r < t) ? s + r : t;
	//
	buff_2 += '<ul>';
	buff_2 += (p != 1) ? '<li><a class="pix_ie" href="javascript:'+f+'(\'' + cur_album + '\',\'1\',\''+json_itemsperpage+'\',\''+json_sortby+'\',\''+json_extras_itemsizes+'\');" title="start">&lt;&lt;</a></li>' : '';
	buff_2 += (p != 1) ? '<li><a class="pix_ie" href="javascript:'+f+'(\'' + cur_album + '\',\''+(p-1)+'\',\''+json_itemsperpage+'\',\''+json_sortby+'\',\''+json_extras_itemsizes+'\');" title="previous">&lt;</a></li>' : '';
	for (var i=s; i<=e; i++) {
		buff_2 += (i == p) ? '<li class="currpage">' + i + '</li>' : '<li><a class="pix_ie" href="javascript:'+f+'(\'' + cur_album + '\',\''+i+'\',\''+json_itemsperpage+'\',\''+json_sortby+'\',\''+json_extras_itemsizes+'\');">' + i +  '</a></li>';
	}
	buff_2 += (p < t) ? '<li><a class="pix_ie" href="javascript:'+f+'(\'' + cur_album + '\',\''+(p+1)+'\',\''+json_itemsperpage+'\',\''+json_sortby+'\',\''+json_extras_itemsizes+'\');" title="next">&gt;</a></li>' : '';
	buff_2 += (p < t) ? '<li><a class="pix_ie" href="javascript:'+f+'(\'' + cur_album + '\',\''+t+'\',\''+json_itemsperpage+'\',\''+json_sortby+'\',\''+json_extras_itemsizes+'\');" title="end">&gt;&gt;</a></li>' : '';
	buff_2 += '</ul>';
	//
	buff_1 += "\n" + '<div class="pagination clearfix">';
	buff_1 += "\n\t" + '<div class="page">';
	buff_1 += "\n\t\t" + '<p>Page ' + p + ' of ' + t + '</p>';
	buff_1 += "\n\t" + '</div>';
	buff_1 += "\n\t" + '<div class="pages">';
	buff_1 += "\n\t\t" + '' + buff_2 + '';
	buff_1 += "\n\t" + '</div>';
	buff_1 += "\n" + '</div>';
	//
	return buff_1;
}

function renderPixGallery(data,f) {
	// reset vars
	jQuery("#pixgallery").empty();
	col_index = 0;
	var buffer_block = '';
	// add pagination to block
	buffer_block += generatePagination(f,data.page,data.count,data.totalCount,data.totalPages,pagination_max_num_pages);
	//
	jQuery.each(data.items, function(i,item){
		var rows_buffer = '';
		//var thumb_block = '';
		if(col_index == 0) {
			// start - execute only once at start
			rows_buffer += "\n" + '<div class="sw_row clearfix">';
		} else if(col_index % cols == 0) {
			// break row
			rows_buffer += "\n" + '</div><div class="sw_row clearfix">';
		}
		rows_buffer += generateImageThumb(item.url,item.sizes[0].url,item.sizes[0].width,item.sizes[0].height,item.title,item.posted);
		if(json_itemsperpage == col_index) {
			rows_buffer += "\n" + '</div>';
		}
		buffer_block += rows_buffer;
		col_index ++;
	});
	//
	// add pagination to block
	buffer_block += generatePagination(f,data.page,data.count,data.totalCount,data.totalPages,pagination_max_num_pages);
	jQuery(buffer_block).appendTo("#pixgallery");
}

function renderPixAlbums(data) {
	// reset vars
	jQuery("#pixalbums").empty();
	col_index = 0;
	var buffer_block = '';
	// add pagination to block
	//buffer_block += generatePagination(data.page,data.count,data.totalCount,data.totalPages,5);
	buffer_block += '<ul>';
	//
	jQuery.each(data.albums, function(i,item){
		//window.alert(item.url);
		//var thumb_block = '';
		var thumb_date = new Date(item.created * 1000);
		thumb_date = thumb_date.toGMTString();
		buffer_block += "\n" + '<li><a href="javascript:getJSONAlbumPhotos(\''+ item.albumId +'\',\'1\',\''+json_itemsperpage+'\',\''+json_sortby+'\',\''+json_extras+'\')">' + item.title + '</a> <span>'+ thumb_date +'</span></li>';
	});
	//
	// add pagination to block
	//buffer_block += generatePagination(data.page,data.count,data.totalCount,data.totalPages,5);
	//*/
	jQuery(buffer_block).appendTo("#pixalbums");
}
