﻿/*
* 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
*/
/// <reference path="jquery-1.2.6-vsdoc.js" />
/// <reference path="jquery-1.2.6.js" />
(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'
            group_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: 'date-posted-asc',    // [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 mainPick = $('<div>').
            $(this).empty();
            //var list = $('<ul>').appendTo(this);
            var list = jQuery.create('ul', { 'class': 'picList' });
            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 == 'group') r.photos = r.photos;
                    // add hooks to access paging data
                    $(list).append('<input id="thPage" type="hidden" value="' + r.photos.page + '" />');
                    $(list).append('<input id="thTotalPages" type="hidden" value="' + r.photos.pages + '" />');
                    $(list).append('<input id="thPerPage" type="hidden" value="' + r.photos.perpage + '" />');
                    $(list).append('<input id="thTotal" type="hidden" value="' + r.photos.total + '" />');
                    BuildNavButtons(r.photos.page, r.photos.pages, r.photos.perpage, r.photos.total);
                    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'];
                                    break;
                                };
                            default:
                                h += photo['secret'] + '.jpg';
                        };
                        if (s.button == null) {
                            if (i == 0) {
                                $("#dvPics").empty();
                                var nDiv = jQuery.create('img', { 'class': 'picLarge', 'src': '../Image.ashx?ID=' + h + '&iHeight=380&iWidth=475', 'title': photo['title'], 'alt': photo['title'] });
                                $("#dvPics").append($(nDiv));
                                //$("#dvPics").append('<img src="' + h + '" title="' + photo['title'] + '" alt="' + photo['title'] + '" />');

                            }
                        };

                        var ttt = photo['title'];
                        var li = jQuery.create('li', { 'class': 'picList' });
                        //var dv = jQuery.create('a', { 'href': 'javascript:SwapPic("' + h + '","' + photo['title'] + '");', 'class': 'photo_thumbs', 'onClick': 'javascript:SwapPic("' + h + '","' + photo['title'] + '"); ' });
                        var dv = jQuery.create('a', { 'href': 'javascript:SwapPic("' + h + '","' + photo['title'] + '");', 'class': 'photo_thumbs' });

                        var nDiv2 = jQuery.create('img', { 'src': t, 'title': photo['title'], 'alt': photo['title'] });
                        $(list).append($(li).append($(dv).append($(nDiv2))));
                        //$("#dvSmallPic" + i.toString()).click(function(event) { SwapPic(h, photo['title']); });
                        //$(list).append('<li><div class="photo_thumbs" onclick=SwapPic("' + h + '")><img src="' + t + '" title="' + photo['title'] + '"alt="' + photo['title'] + '" /></div></li>');

                    };
                    if (s.callback) s.callback(list); $("#gallery-flickr").append($(list));
                };
            });
        });
    };
    // 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 'group':
                    url += '&method=flickr.groups.pools.getPhotos&group_id=' + s.group_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);



jQuery(function() {
    jQuery("#gallery-flickr").flickr({
        api_key: "5bc50c5d808443eff2ec668710c16a29",
        type: "group",
        group_id: "941786@N21",
        per_page: 12
    });
    jQuery("#btnRefresh").click(function() {
        jQuery("#gallery").html("").flickr({
            api_key: "5bc50c5d808443eff2ec668710c16a29",
            per_page: 14
        });
    });
});
function BuildNavButtons(page, totalpages, perpage, total) {
    var next = $("#picNext");
    var prev = $("#picPrev");
    var n = 1;
    var p = 1;
    $("#dvPicPages").empty();
//    $("#picNext").attr('disabled') = '';
//    $("#picPrev").attr('disabled') = '';

    if (totalpages > 1) {
        var currentset = Math.ceil(page / 10);
        var totalset = Math.ceil(totalpages / 10);
        var pagecount = 0;
        if (totalset == currentset &&(totalpages % 10)!=0) {
            pagecount = totalpages % 10;
        }
        else { pagecount = 10; };
        var multiplier = currentset - 1;
        var PageID = 1;
        for (var i = 0; i < pagecount; i++) {
            
            PageID = i + 1 + (multiplier * 10);
            var aref = jQuery.create('a', { 'href': 'javascript:NextSet("' + PageID + '");' });
            if (page == PageID) {
                $(aref).addClass('selected');
            };
            aref.innerHTML = PageID;
            $("#dvPicPages").append($(aref));
        };
        if (pagecount < 10) {
            $("#picNext").addClass('picNextNotVis');
            $("#pNext").removeClass('pNextNotVis');
            if (multiplier == 0) {
                $("#pPrev").removeClass('pPrevNotVis');
                $("#picPrev").addClass('picPrevNotVis');
            }
            else {
                $("#pPrev").addClass('pPrevNotVis');
                $("#picPrev").removeClass('picPrevNotVis');
                p = multiplier * 10;
                prev[0].href = "javascript:NextSet(" + p + ");";
            };
        }
        else {
            if (totalset == currentset) {
                $("#picNext").addClass('picNextNotVis');
                $("#pNext").removeClass('pNextNotVis');
            }
            else {
                $("#picNext").removeClass('picNextNotVis');
                $("#pNext").addClass('pNextNotVis');
                p = multiplier * 10+11;
                next[0].href = "javascript:NextSet(" + p + ");";
            };
            if (multiplier == 0) {
                $("#pPrev").removeClass('pPrevNotVis');
                $("#picPrev").addClass('picPrevNotVis');
            }
            else {
                $("#pPrev").addClass('pPrevNotVis');
                $("#picPrev").removeClass('picPrevNotVis');
                p = multiplier * 10;
                prev[0].href = "javascript:NextSet(" + p + ");";
            };
        };

    }
    else {
        $("#picNext").addClass('picNextNotVis');
        $("#picPrev").addClass('picPrevNotVis');
        $("#pNext").removeClass('pNextNotVis');
        $("#pPrev").removeClass('pPrevNotVis');
    };
    
}
function load() {
    jQuery("#gallery-flickr").flickr({
        api_key: "5bc50c5d808443eff2ec668710c16a29",
        type: "group",
        group_id: "941786@N21",
        per_page: 5
    });
}
function SwapPic(photo, title) {

    var nDiv = jQuery.create('img', { 'class': 'picLarge', 'alt': title, 'title': title, 'src': '../Image.ashx?ID=' + photo + '&iHeight=380&iWidth=475' });

    //$("<li/>").append($("div
    $("#dvPics").empty();
//    var x1 = $(nDiv)[0].width;
//    var y1 = $(nDiv)[0].height;
//    if (x1 > 475) {
    //        //var v = floorSize + (x * (ceilingSize - floorSize));, 'style': 'display:none' 
//        $(nDiv)[0].width = 475;
//        $(nDiv)[0].style.display = "block";

//    }
//    else if (y1 > 360) {
//        //var v = floorSize + (x * (ceilingSize - floorSize));
//        $(nDiv)[0].height = 360;
//        $(nDiv)[0].style.display = "block";

//    }
//    else {
//        //$(nDiv).bind("load", resizeImage(nDiv)).attr('src', photo);
//        $(nDiv).load(function(event) { resizeImage(nDiv); });
    //    };
    //$(nDiv).load(function(event) { resizeImage(); }); 
    $("#dvPics").append($(nDiv));
    

}
function resizeImage() {
   // var xx = dv;
   // var x1 = xx.width;
    // var y1 = xx.height;
    var xx = $("img.picLarge")[0];
    if (xx != null) {
        var x1 = $("img.picLarge")[0].width;
        var y1 = $("img.picLarge")[0].height;
        if (x1 > 475) {
            //var v = floorSize + (x * (ceilingSize - floorSize));
            $("img.picLarge")[0].width = 475;
            //xx.width = 475;


        }
        else if (y1 > 360) {
            $("img.picLarge")[0].height = 360;
            //xx.height = 360;
        };
        $("img.picLarge")[0].style.display = "block";
        //xx.style.display = "block";
    };
}
function NextSet(next) {

    jQuery("#gallery-flickr").flickr({
        api_key: "5bc50c5d808443eff2ec668710c16a29",
        type: "group",
        group_id: "941786@N21",
        per_page: 12,
        page: next,
        button: 1
    });
    
}

