﻿/* ImageArray_Caption.js - modified ImageArray.js to include (hyperlinked) caption underneath thumbnail image */
/* Dave Arthur - 20100916 */



$.fn.ImageArrayCaption=function (opt) {

    var defaultOptions={
        url: null,
        visible: 0,
        imgWidth: 90,
        imgHeight: 90,
        maxX: 10,
        maxY: 0,
        linkTarget: '_parent'
        //direction: 'horizontal'
    }

    var options=$.extend(defaultOptions,opt);

    var param={
        liList: new Array()
       // paramSeparator: (options.url.indexOf('?')> -1)?'&':'?',
    }

    return this.each(function () {
        // initialize carousel params
        $(this).hide();
        initCarousel($(this));        
    });


    function initCarousel(div) {
        var bigNumber=9999999;
        //var isV=param.isVertical;
        // initialize params
        //$(div).css({ 'position': 'relative' })
        $(div).html('<ul></ul>');
		$(div).addClass('ImageCaptionContainer');
        var ul=$('ul',div);
        if(options.maxY>0) ul.css({ 'height': options.imgHeight*options.maxY });
        if(options.maxX>0) ul.css({ 'width': options.imgWidth*options.maxX });
        if(!window.parent&&options.linkTarget=='_parent') options.linkTarget='_self';

        // get the first options.visible * 2 images
        //var endIndex=options.visible*2;
        loadImages(function (data) {
            param.imageCount=data.images.length;
            for(var i=0;i<param.imageCount;i++) { if(options.visible<=0||i<options.visible) { ul.append(param.liList[i]); } else { break; } };
            $(div).show();
        });
    }

    function loadImages(callback) {
        var jsonUrl=buildUrl();
        if(jsonUrl&&callback) $.getJSON(jsonUrl,function (data) {
            var images=data.images;
            //param.downloadIndex = data.to+1;
            for(var i=0;i<images.length;i++) {
                if(!images[i].src) images[i].src='http://www.infomine.com/global/assets/images/1x1trans.gif'
                var li=$('<li><a target="'+options.linkTarget+'" href="'+images[i].url+'"><img src="'+images[i].src+'" border="0" /></a><div class="ThumbCaption"><a target="'+options.linkTarget+'" href="'+images[i].url+'">'+images[i].caption +'</a></div></li>');
                li.addClass('ImageCaption');
                param.liList.push(li);
            }
            callback(data);
        });
    }

    function buildUrl() {
        //return options.url+param.paramSeparator+"&jsoncallback=?";
		return options.url;
    }

    function css(el,prop) {
        return (el[0])?(parseInt($.css(el[0],prop))||0):0;
    };

    function width(el) {
        return (el[0])?(el[0].offsetWidth+css(el,'marginLeft')+css(el,'marginRight')):0;
    };

    function height(el) {
        return (el[0])?(el[0].offsetHeight+css(el,'marginTop')+css(el,'marginBottom')):0;
    };

    function debug(msg) {
        $('#debug').text(msg);
    }



}
