/*
* jQuery image gallery plugin
* 
* @version  0.1
* @homepage ??
* @author   Boz Kay (http://www.boz.co.uk)
*
* Copyright (c) 2009 Nowhere
*/

(function($){

	$.fn.imgLib = function(options){
    
		var opts = $.extend({}, $.fn.imgLib.defaults, options);

		// reset the library
		$(opts.imgLibElement).html('<div id="imgLibInner"></div>').show();
		var lib = $(opts.imgLibElement+' #imgLibInner');

		// bind events to the container
		lib.bind('next.imgLib',next);
		lib.bind('previous.imgLib',previous);
		lib.bind('loadImgs.imgLib',loadImgs);

		// setup initial html elements
		if(opts.header) {
	    	lib.append(
				'<h2 id="imgLibTitle">Your image library</h2>'+
				'<p id="imgLibNote">Click an image to select it</p>'
			);
	    }
	    lib.append(
			'<div id="imgLibLoading"><img src="/images/shared/ajax-loader.gif" /></div>'+
			'<div id="imgLibWrap"></div>'
		);

		if(opts.upload) {
			$(opts.imgLibElement+' #imgLibWrap').append(
				'<div id="imgLibUpload"></div>'
			);
		}


		$(opts.imgLibElement+' #imgLibWrap').append(
			'<div id="imgLibImages"></div>'+
			'<div id="imgLibNav">'+
			'<a class="previous"><img src="/images/shared/buttons/left.png" /></a>'+
			'<a class="next"><img src="/images/shared/buttons/right.png" /></a>'+
			'</div>'
		);

		$(opts.imgLibElement+' #imgLibLoading').hide();

		// start with inital images from lib
		lib.trigger('loadImgs.imgLib',[0]);
		
		if(opts.upload) {
			addUpload();
		}
			
		$().showPage({
            show: opts.imgLibElement,
            showNow: true,
            noClick: true,
            destroySwf: opts.destroySwf
        });		
		


		// the event functions ...
		function next() {
			lib.trigger('loadImgs.imgLib',[lib.imgLib.currentSet+opts.limit]);
		}
		function previous() {
			lib.trigger('loadImgs.imgLib',[lib.imgLib.currentSet-opts.limit]);
		}

		
		function loadImgs(e,fromNo) {

			
			lib.imgLib.currentSet = fromNo;
		    // add images
			$(opts.imgLibElement+' #imgLibLoading').show();
			$(opts.imgLibElement+' #imgLibImages').hide();
			$.post(opts.getImagePHP, {limit: opts.limit, from: fromNo}, function(html) {
				var content = html;
				//alert($(opts.imgLibElement+' #imgLibImages').length);
				$(opts.imgLibElement+' #imgLibImages').html(content);
				//alert($(opts.imgLibElement+' #imgLibImages').html());
				// make clickable
				$(opts.imgLibElement+' #imgLibImages img').filter('img').css('cursor','pointer').hover(function() {
					$(opts.imgLibElement+' #imgLibImages').css('border-color','#686805');
				}, function() {
					$(opts.imgLibElement+' #imgLibImages').css('border-color','#000');
				});
				setImgClick();

				$(opts.imgLibElement+' #imgLibLoading').hide();
		    	//$(this).fadeIn();
				$(opts.imgLibElement+' #imgLibImages').fadeIn();
		    	setArrows();
			},'html');
		};
		
		function setImgClick() {
			//alert('bound'+opts.testImageId);
			$(opts.imgLibElement+' #imgLibImages img').unbind('click').click(function(){
				imageID = $(this).attr('id');
				//alert(opts.testImageId);
				opts.imageClick(imageID);
				$(opts.imgLibElement+' .close').trigger('click');
			});
		}

		function setArrows() {

			if($(opts.imgLibElement+' #imgLibTotal').length > 0) {
				var total = $(opts.imgLibElement+' #imgLibTotal').html();			
			} else {
				var total = 0;
			}
			
			if(total == 0) {
				
				$(opts.imgLibElement+' #imgLibImages').html('<p class="noImages">Your image library is empty. Please add an image using the button below.<br />Once you have added your first image, you will then be able to use this library to place images into areas of the nowhere website.</p>');
				
				$(opts.imgLibElement+' #imgLibNav').hide();
				$(opts.imgLibElement+' #imgLibNote').hide();
						
			} else {

				$(opts.imgLibElement+' #imgLibNav').show();
				$(opts.imgLibElement+' #imgLibNote').show();
				
				if(lib.imgLib.currentSet == 0) {
					$(opts.imgLibElement+' .previous').unbind().css({opacity:'0.5',cursor:'default'});
				} else {
					$(opts.imgLibElement+' .previous').unbind().click(function(){
						lib.trigger('previous.imgLib');
					}).css({opacity:'1',cursor:'pointer'});
				}
				if((lib.imgLib.currentSet+opts.limit) < total) {
					$(opts.imgLibElement+' .next').unbind().click(function(){
						lib.trigger('next.imgLib');
					}).css({opacity:'1',cursor:'pointer'});
				} else {
					$(opts.imgLibElement+' .next').unbind().css({opacity:'0.5',cursor:'default'});
				}
			
			}
			
		}

		function addUpload() {
			$('#imgLibUpload').html('<form id="PBUploadForm"><input type="file" id="PBFile" name="PBFile" /></form>');

			// use a flash uploader
			/*swfobject = new SWFobject();
			if(swfobject.hasFlashPlayerVersion("10")) {*/
				$("#PBFile").makeAsyncUploader({
					upload_url: "/imgLib/AsyncUpload.php", 
					flash_url: '/imgLib/swfupload.swf',
					button_image_url: '/imgLib/addimage.png',
					file_size_limit: '50 MB',
					width: 100,
					height: 41,
					post_params: {"PHPSESSID" : window.PHPSESSID},
					file_types: '*.jpg; *.gif; *.png; *.tif; *.mpg; *.mp4;',
					button_text: '<span></span>',
					upload_complete_callback: function() {
						lib.trigger('loadImgs.imgLib',[0]);
					}
				});
			/*} else {
				var fn = function() {
				        var att = { data:"/expressInstall.swf", width:"600", height:"240" };
				        var par = {};
				        var id = "imgLibUpload";
				        swfobject.showExpressInstall(att, par, id);
				}
				swfobject.addDomLoadEvent(fn);
			}*/
			
		}


	}
	
	

	$.fn.imgLib.defaults = {
		imgLibElement: '#imgLib',
		getImagePHP: '/imgLib/getImage.php',
		imageClick: function(){alert('done');},
		limit: 6,
		show: 0,
		header: true,
		destroySwf: true,
		upload: true
	};        

})(jQuery);