/*
 * jQuery Flickr - jQuery plug-in
 * Version 1.0, Released 2008.04.17
 *
 * Copyright (c) 2008 Daniel MacDonald (www.projectatomic.com)
 * Dual licensed GPL http://www.gnu.org/licenses/gpl.html 
 * and MIT http://www.opensource.org/licenses/mit-license.php
 */
(function($) {
$.fn.flickr = function(o){
var s = {
    api_key: null,              // [string]    required, see http://www.flickr.com/services/api/misc.api_keys.html
    type: null,                 // [string]    allowed values: 'photoset', 'search', default: 'flickr.photos.getRecent'
    photoset_id: null,          // [string]    required, for type=='photoset'  
    text: null,			            // [string]    for type=='search' free text search
    user_id: null,              // [string]    for type=='search' search by user id
    group_id: null,             // [string]    for type=='search' search by group id
    tags: null,                 // [string]    for type=='search' comma separated list
    tag_mode: 'any',            // [string]    for type=='search' allowed values: 'any' (OR), 'all' (AND)
    sort: 'relevance',    // [string]    for type=='search' allowed values: 'date-posted-asc', 'date-posted-desc', 'date-taken-asc', 'date-taken-desc', 'interestingness-desc', 'interestingness-asc', 'relevance'
    thumb_size: 's',            // [string]    allowed values: 's' (75x75), 't' (100x?), 'm' (240x?)
    size: null,                 // [string]    allowed values: 'm' (240x?), 'b' (1024x?), 'o' (original), default: (500x?)
    per_page: 100,              // [integer]   allowed values: max of 500
    page: 1,     	              // [integer]   see paging notes
    attr: '',                   // [string]    optional, attributes applied to thumbnail <a> tag
    api_url: null,              // [string]    optional, custom url that returns flickr JSON or JSON-P 'photos' or 'photoset'
    params: '',                 // [string]    optional, custom arguments, see http://www.flickr.com/services/api/flickr.photos.search.html
    api_callback: '?',          // [string]    optional, custom callback in flickr JSON-P response
    callback: null             // [function]  optional, callback function applied to entire <ul>
    // PAGING NOTES: jQuery Flickr plug-in does not provide paging functionality, but does provide hooks for a custom paging routine
    // within the <ul> created by the plug-in, there are two hidden <input> tags, 
    // input:eq(0): current page, input:eq(1): total number of pages, input:eq(2): images per page, input:eq(3): total number of images
    
    // SEARCH NOTES: when setting type to 'search' at least one search parameter  must also be passed text, user_id, group_id, or tags
    
    // SIZE NOTES: photos must allow viewing original size for size 'o' to function, if not, default size is shown
  };
  if(o) $.extend(s, o);
  return this.each(function(){
    // create unordered list to contain flickr images
		var list = $('<ul>').appendTo(this);
	var url = $.flickr.format(s);
		$.getJSON(url, function(r){
      if (r.stat != "ok"){
        for (i in r){
	        $('<li>').text(i+': '+ r[i]).appendTo(list);
        };
      } else {
        if (s.type == 'photoset') r.photos = r.photoset;

        // add hooks to access paging data
        list.append('<input type="hidden" value="'+r.photos.page+'" id="page"/>');
        list.append('<input type="hidden" value="'+r.photos.pages+'" id="pages"/>');
        list.append('<input type="hidden" value="'+r.photos.perpage+'" id="perpage"/>');
        list.append('<input type="hidden" value="'+r.photos.total+'" id="pageTotal"/>');
				list.append('<input type="hidden" value="" id="pagecache"/>');
				clearPager();
        for (var i=0; i<r.photos.photo.length; i++){
          var photo = r.photos.photo[i];
          // format thumbnail url
          var t = 'http://farm'+photo['farm']+'.static.flickr.com/'+photo['server']+'/'+photo['id']+'_'+photo['secret']+'_'+s.thumb_size+'.jpg';
          //format image url
          var h = 'http://farm'+photo['farm']+'.static.flickr.com/'+photo['server']+'/'+photo['id']+'_';
          switch (s.size){
            case 'm':
              h += photo['secret'] + '_m.jpg';
              break;
            case 'b':
              h += photo['secret'] + '_b.jpg';
              break;
            case 'o':
              if (photo['originalsecret'] && photo['originalformat']) {
                h += photo['originalsecret'] + '_o.' + photo['originalformat'];
              } else {
                h += photo['secret'] + '_b.jpg';
              };
              break;
            default:
              h += photo['secret'] + '.jpg';
          };
					buildPager();
					$title = photo['title'];
					$title = $title.replace(/['"]/g,'');
					$title = $title.replace(/["']{1}/gi,"");

	list.append('<li><a href="'+h+'" '+s.attr+' rel="set[results]" class="lightview" title="'+$title+'<br><a href=\'http://www.flickr.com/photos/'+photo['owner']+'/'+photo['id']+'/\' target=_blank style=text-decoration:underline >View this photo at flickr.com</a>" id="http://www.flickr.com/photos/'+photo['owner']+'/'+photo['id']+'/" alt="'+$title+'::"><img src="'+t+'" alt="'+$title+'"  title="'+$title+'"  /></a></li>');
		;

        };
        if (s.callback) s.callback(list);
      };LoadToolitps();
		});	
  });
};


// static function to format the flickr API url according to the plug-in settings 
$.flickr = {
    format: function(s){
        if (s.url) return s.url;
        var url = 'http://api.flickr.com/services/rest/?format=json&jsoncallback='+s.api_callback+'&api_key='+s.api_key;
        switch (s.type){
            case 'photoset':
                url += '&method=flickr.photosets.getPhotos&photoset_id=' + s.photoset_id;
                break;
            case 'search':
                url += '&method=flickr.photos.search&sort=' + s.sort;
                if (s.user_id) url += '&user_id=' + s.user_id;
                if (s.group_id) url += '&group_id=' + s.group_id;
                if (s.tags) url += '&tags=' + s.tags;
                if (s.tag_mode) url += '&tag_mode=' + s.tag_mode;
                if (s.text) url += '&text=' + s.text;
                break;
            default:
                url += '&method=flickr.photos.getRecent';
        };
        if (s.size == 'o') url += '&extras=original_format';
        url += '&per_page=' + s.per_page + '&page=' + s.page + s.params;
        return url;
    }
};



})(jQuery);
function clearPager(){
	document.getElementById('pager').innerHTML = '';
		$pagesTotal = '';
	if(document.getElementById('pageTotal')){
	$pagesTotal = document.getElementById('pageTotal').value;
	}
	if($pagesTotal == 0){document.getElementById('query-heading').innerHTML = "No images found matching &#8220;"+document.getElementById('cache').value+"&#8221;. Try again.";document.getElementById('loader').style.display='none';}

}
function buildPager()
{
	$page = 1;
	if(document.getElementById('page')){
	$page = document.getElementById('page').value;
	}
	$pages = 1;
	if(document.getElementById('pages')){
	$pages = document.getElementById('pages').value;
	}
	$pagesTotal = '';
	if(document.getElementById('pageTotal')){
	$pagesTotal = document.getElementById('pageTotal').value;
	}
	//searched for text

if(document.getElementById('cache').value != ''){
document.getElementById('query-heading').innerHTML = $pagesTotal+" images found matching &#8220;"+document.getElementById('cache').value+"&#8221;."
}
else
{
document.getElementById('query-heading').innerHTML = "You entered a blank search, here are images of Africa."
}




	$prev = "<li class='inactive' title='Your already here!'>prev</li>";
	$next = "<li class='inactive' title='Your already here!'>next</li>";
	$page_links = '';
	if($page!=1){
	$prev = "<li><a href='#' onclick='clearPager();Show("+(parseInt($page)-1)+")' id='prev' title='Previous page'>prev</a></li>";
	}
	if($page!=$pages){
	$next = "<li><a href='#' onclick='clearPager();Show("+(parseInt($page)+1)+")' id='next' title='Next page'>next</a></li>";
	}
	// creating the pages and only showing 10
	$i = parseInt($page) - 1;
	if(parseInt($page) - 5 > 0){
	$i 	= parseInt($page) - 5
	$next = $next+"<li><a href='#' onclick='clearPager();Show(1)'>1</a></li><li class='inactive'>&#8230;</li>";
	}
	$flag = true;
	do{
		$i++;
		if(parseInt($i)<parseInt($page)+10)
		{
					if($i != $page){$page_links = $page_links+"<li><a href='#' onclick='clearPager();Show("+$i+")'>"+$i+"</a></li>";
					}else{$page_links = $page_links+"<li class='inactive'>"+$i+"</li>";}
	}else{
			if($flag){
		$page_links = $page_links+"<li class='inactive'>&#8230;</li><li><a href='#' onclick='clearPager();Show("+$pages+")'>"+$pages+"</a></li>";$flag = false;
			}
	}
	
	}while($i!=$pages)
document.getElementById('pager').innerHTML = "<ul class='pagination'>"+$prev+$next+$page_links+"</ul>";
document.getElementById('loader').style.display = 'none';

}			


