/*
 * jQuery Galery v1.0 
 *
 * Copyright (c) 2009 David Corthay
 * Licensed under the MIT License:
 *  http://www.opensource.org/licenses/mit-license.php
 */
(function($) {
    $.fn.galery = function(options) { 
        var defaults = {
            pixDir: "",
			xmlDir:"",
			pixViewer:"#viewer",
			nextPic:".nextPic",
			nextPicText:"next",
			prevPic:".prevPic",
			prevPicText:"previous",
			nbrePic:".position",
			loader:"<p>loading...<p>"
        }; 
    var opts = $.extend(defaults, options);
	//errors msg
	$(opts.pixViewer)
		.ajaxStart(function(){$(this).empty().append(opts.loader);})
		.ajaxError(function(){$(this).empty().append('<p class="error">XML source not found</p>');});
	//xhr
	$.ajax({
	    type: "GET",
		url: opts.xmlDir,
		async:true,
		cache:true,
	    dataType: "xml",
	    success: function(xml) {
			var nowPic=1;
			//xml parsing
			var images = new Array();
			$(xml).find('image').each(function(i){
				i++;
				lastPic=i++;	
				var img = $(this).find('filename').text();						
				images[i] = img;
				var src = opts.pixDir + '/'+images[i];	
				$("#wrapper").append('<img style="display:none" src="'+src+'"/>');					
			});
			//functions 
			function display(x) {
				x=x+1;
				$(opts.pixViewer).empty().html(opts.loader);
				$('<img  alt="' + images[x] + '" src="'+ opts.pixDir + '/' + images[x] + '" />')   
						.load(function(){
						var height=$(this).height();
						$(opts.pixViewer).html($(this).fadeIn(260));
						var height=$(this).height();
						if(height>560){	
							$(this).css({margin:"-200px 0 0 0"});
						}						
				});	
			}
			function position(x,y){
				$(opts.nbrePic).empty().append(x+'/'+y);
			}
			function navigation(x,y){
				$(opts.nextPic).html(opts.nextPicText);
				$(opts.prevPic).html(opts.prevPicText);
				switch(x){
					case 1:
						$(opts.prevPic).hide();
					break;
					case y:
						$(opts.nextPic).hide();
					break;
					default:
						$(opts.prevPic).show();
						$(opts.nextPic).show();
				}
			}
			//default default pix
			display(nowPic);
			position(nowPic,lastPic);
			navigation(nowPic,lastPic);
			//display next pix
			$(opts.nextPic).click(function(){
				nowPic=nowPic+1;
				display(nowPic);
				position(nowPic,lastPic);
				navigation(nowPic,lastPic);
			});	
			//display prev pix
			$(opts.prevPic).click(function(){
				nowPic=nowPic-1;
				display(nowPic);
				position(nowPic,lastPic);	
				navigation(nowPic,lastPic);
			});					
		}				         	   		   
	});
    return $(this);      
    };
})(jQuery);
